Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Type: Package
Package: gridify
Title: Enrich Figures and Tables with Custom Headers and Footers and More
Version: 0.7.7
Version: 0.7.7.9000
Authors@R: c(
person("Maciej", "Nasinski", , "Maciej.Nasinski@ucb.com", role = c("aut", "cre")),
person("Alexandra", "Wall", , "Alexandra.Wall@ucb.com", role = "aut"),
Expand Down
4 changes: 4 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# gridify 0.7.7.9000

* Added section on pipeline security and PDF searchability to `README.md`, `gridify` vignette, and `transparency` vignette.

# gridify 0.7.7

* Updated `README.md` file.
Expand Down
29 changes: 28 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,12 @@ Whilst **rtables** are not directly supported, we can use **rtables** with `grid

As `gridify` is based on the graphical tool **grid**, any figure or table
inputs are converted to a `grob` object in `gridify` and the result of using
`gridify` is always a graphical image.
`gridify` is always a graphical image. This is by design: by unifying
tables and figures into scalable vector graphics, `gridify` locks the
layout so it cannot break across environments — no shifting columns, no
reflowing text. The output is stable enough for final PDF submissions
(e.g. eCTD) while the text stays clear, searchable, and copy-able at
any zoom level.

## Installation

Expand Down Expand Up @@ -141,6 +146,28 @@ For more information please visit the following vignettes:
`vignette("transparency", package = "gridify")` - How to extract the
raw grid code to reproduce a `gridify` object.

### "No-Touch" Pipelines

`gridify` outputs are graphical — they **cannot be hand-edited** like
Word or Excel. Once a PDF or PNG is produced, the content is locked:
nothing to retype, nothing to rephrase. Unlike Word/RTF, the layout
will not reflow or break when opened on a different machine. This is
useful in validated environments where any manual change after
generation is a compliance issue, and especially for final eCTD
submissions where formatting must be pixel-stable.

### PDF Text is Still Searchable

Because `gridify` uses R's vector graphics engine, text in PDFs
(exported with `export_to()`) is **real text**, not a flat image.
Reviewers can:

- use Ctrl+F / Cmd+F to search,
- copy & paste values for checks,
- zoom in without losing clarity.

So the output is uneditable *and* searchable at the same time.

## Related packages

Other packages exist which add headers, footers, and other elements to figures and tables; most of the input classes to `gridify` already support these features.
Expand Down
21 changes: 21 additions & 0 deletions vignettes/gridify.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,27 @@ To save `gridify` drawings to files see `vignette("simple_examples", package = "
- **Custom Layout**: `vignette("create_custom_layout", package = "gridify")`
- **Transparency**: `vignette("transparency", package = "gridify")`

## A Note on Security and Searchability

Two things worth knowing about `gridify` outputs in regulated settings:

### Outputs Cannot Be Hand-Edited

`gridify` produces graphical objects, not editable documents.
Unlike Word or Excel, there is nothing to retype or change by hand after the output is generated.
This matters in validated environments where manual modifications are not allowed.

### PDF Text is Searchable

Even though the output is graphical, text in PDFs (via `export_to()`) is **real text** — not a flat image.
R's vector graphics engine keeps the characters selectable, so reviewers can:

- search with Ctrl+F / Cmd+F,
- copy & paste text,
- zoom without losing quality.

In short: the output is locked down but still easy to work with for review.

## Conclusion

That’s it! `gridify` enables you to consistently position text elements around any figures or tables, all while letting you leverage base R `grid` for maximum control and transparency.
Expand Down
11 changes: 10 additions & 1 deletion vignettes/transparency.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,17 @@ Through meta-programming, `gridify` captures all `grid` calls required to produc
3. **Audit and Debugging**
The ability to retrieve the full `grid` calls makes it straightforward to diagnose layout issues or confirm that all elements are placed correctly.

4. **"No-Touch" Outputs**
`gridify` outputs are graphical — they cannot be hand-edited after generation.
Together with the auditable `grid` code, this is helpful in validated workflows where manual changes are not allowed.

5. **PDF Text is Searchable**
Text in PDFs from `export_to()` is real, selectable text — not a flat image.
Reviewers can search (Ctrl+F), copy & paste, and zoom without losing quality.

## Conclusion

By providing direct access to the underlying `grid` code, `gridify` prioritizes **transparency**.
By exposing the underlying `grid` code, `gridify` keeps things **transparent**.
The outputs are also uneditable yet searchable, which is a practical combination for regulated environments.

For more details on other aspects like reproducibility, consistency, and advanced layouts, check out our package documentation and additional vignettes.