From 6b1141928f427571a48c895d3437a4c9642d5853 Mon Sep 17 00:00:00 2001 From: Maciej Nasinski Date: Thu, 26 Feb 2026 19:22:37 +0100 Subject: [PATCH 1/5] searchability --- DESCRIPTION | 2 +- NEWS.md | 4 ++++ README.md | 25 +++++++++++++++++++++++++ vignettes/gridify.Rmd | 21 +++++++++++++++++++++ vignettes/transparency.Rmd | 11 ++++++++++- 5 files changed, 61 insertions(+), 2 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index bbd973d..e109ca0 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -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"), diff --git a/NEWS.md b/NEWS.md index e88a154..0a6a6ea 100644 --- a/NEWS.md +++ b/NEWS.md @@ -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. diff --git a/README.md b/README.md index 453d973..44ee75f 100644 --- a/README.md +++ b/README.md @@ -141,6 +141,31 @@ For more information please visit the following vignettes: `vignette("transparency", package = "gridify")` - How to extract the raw grid code to reproduce a `gridify` object. +## Why `gridify` for Clinical Reporting? + +Apart from layouts, `gridify` has two practical properties that matter +for regulated pharma work: + +### "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. This is useful in validated +environments (21 CFR Part 11, GxP) where any manual change after +generation is a compliance issue. + +### 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. diff --git a/vignettes/gridify.Rmd b/vignettes/gridify.Rmd index 85cbb56..819b790 100644 --- a/vignettes/gridify.Rmd +++ b/vignettes/gridify.Rmd @@ -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 (21 CFR Part 11, GxP) 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. diff --git a/vignettes/transparency.Rmd b/vignettes/transparency.Rmd index 3c42d6d..39fca68 100644 --- a/vignettes/transparency.Rmd +++ b/vignettes/transparency.Rmd @@ -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 (21 CFR Part 11, GxP) 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. From 747c49dd988db58b165a0163fa148ff9fb4c1f1e Mon Sep 17 00:00:00 2001 From: Maciej Nasinski Date: Thu, 26 Feb 2026 19:28:54 +0100 Subject: [PATCH 2/5] update --- README.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/README.md b/README.md index 44ee75f..6e45813 100644 --- a/README.md +++ b/README.md @@ -141,17 +141,12 @@ For more information please visit the following vignettes: `vignette("transparency", package = "gridify")` - How to extract the raw grid code to reproduce a `gridify` object. -## Why `gridify` for Clinical Reporting? - -Apart from layouts, `gridify` has two practical properties that matter -for regulated pharma work: - ### "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. This is useful in validated -environments (21 CFR Part 11, GxP) where any manual change after +environments where any manual change after generation is a compliance issue. ### PDF Text is Still Searchable From 85400230b4cf9e70ab528f31a355163e74ca16d0 Mon Sep 17 00:00:00 2001 From: Maciej Nasinski Date: Thu, 26 Feb 2026 19:29:02 +0100 Subject: [PATCH 3/5] update --- vignettes/gridify.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vignettes/gridify.Rmd b/vignettes/gridify.Rmd index 819b790..e262a7c 100644 --- a/vignettes/gridify.Rmd +++ b/vignettes/gridify.Rmd @@ -214,7 +214,7 @@ Two things worth knowing about `gridify` outputs in regulated settings: `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 (21 CFR Part 11, GxP) where manual modifications are not allowed. +This matters in validated environments where manual modifications are not allowed. ### PDF Text is Searchable From f9865b8e9407646b6e2ffeea9fc27405cef96559 Mon Sep 17 00:00:00 2001 From: Maciej Nasinski Date: Thu, 26 Feb 2026 19:32:26 +0100 Subject: [PATCH 4/5] general validated --- vignettes/transparency.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vignettes/transparency.Rmd b/vignettes/transparency.Rmd index 39fca68..694e512 100644 --- a/vignettes/transparency.Rmd +++ b/vignettes/transparency.Rmd @@ -99,7 +99,7 @@ Through meta-programming, `gridify` captures all `grid` calls required to produc 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 (21 CFR Part 11, GxP) where manual changes are not allowed. + 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. From 43b08a430840d3b443167e1fccdc0d42ac3ff34f Mon Sep 17 00:00:00 2001 From: Maciej Nasinski Date: Thu, 26 Feb 2026 19:43:30 +0100 Subject: [PATCH 5/5] pros --- README.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6e45813..2e002a6 100644 --- a/README.md +++ b/README.md @@ -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 @@ -145,9 +150,11 @@ For more information please visit the following vignettes: `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. This is useful in validated -environments where any manual change after -generation is a compliance issue. +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