doconv 0.4.2
CRAN release: 2026-10-22
Issues
- The visual tests (
expect_snapshot_doc()and the functions using it) now count different pixels by comparing the decoded bytes of the images. The ‘AE’ metric of ‘ImageMagick’ used in 0.4.1 does not count pixels with ‘ImageMagick’ 7, where it is weighted by the size of the differences: small differences, e.g. of antialiasing, were underestimated.
doconv 0.4.1
Features
- New argument
show_markupindocx2pdf(),to_pdf(),to_miniature()andexpect_snapshot_doc(), to show tracked changes and comments of ‘Word’ documents in the PDF and the miniature (idea from #10). It isFALSEby default: all engines now give the final document, without tracked changes marks and without comments. ‘Word’ on macOS was showing them, and ‘LibreOffice’ was showing tracked changes: miniatures and reference snapshots of documents with tracked changes or comments must be updated. With ‘LibreOffice’, comments are drawn in the margin, and hiding tracked changes is only supported for ‘docx’ files and requires package ‘officer’. - Support for ‘Excel’ workbooks (idea from #11): new function
xlsx2pdf(), and ‘xlsx’ and ‘xlsm’ files are now accepted byto_pdf(),to_miniature()andexpect_snapshot_doc(). With ‘Excel’, each sheet is scaled to the width of one page, without modifying the workbook; with ‘LibreOffice’, each sheet is exported on a single page with the size of its content. The pages of the miniature are trimmed of their white margins.
Issues
- On Linux, ‘LibreOffice’ is now run without the
LD_LIBRARY_PATHset by R. R prepends its own library directories to this variable and ‘LibreOffice’ was failing (“libreglo.so cannot open shared object file”), or aborting when/usr/lib/libreoffice/programwas added to it as the documentation suggested. ‘locatexec’ >= 0.2.1 is needed to detect ‘LibreOffice’ in this case. -
to_pdf()now fails when ‘LibreOffice’ does not produce a PDF; it was returning the output path although no file was written, as ‘LibreOffice’ can exit without error status after an export error. -
to_miniature()and the visual tests (expect_snapshot_doc()) now keep the page order of documents of 10 pages or more; pages were sorted alphabetically (page 10 before page 2). Reference miniatures of such documents must be updated. - With testthat,
expect_snapshot_doc()now skips the test when ‘Word’ or ‘PowerPoint’ is not available; it was failing with an error. -
to_pdf()andcheck_libreoffice_export()no longer leave a temporary directory behind when ‘LibreOffice’ is used. - The
timeoutargument ofto_pdf()(also used byto_miniature()) is now applied to ‘LibreOffice’, which could previously run without limit. -
to_miniature()now uses itsdpiargument with ‘Word’ and ‘RTF’ documents; 150 was always used. -
expect_snapshot_doc()now accepts ‘.doc’ files, as documented. -
docx_update()no longer creates an unused working directory, and raises an explicit error on macOS when the update fails. - File extensions are no longer case sensitive (‘.DOCX’, ‘.PDF’, etc.).
to_miniature()refused these files, and the defaultoutputofdocx2pdf()andpptx2pdf()was the input file itself. - The default
outputofpptx2pdf()is now also a ‘.pdf’ file when the input is a ‘.ppt’ file; it was the input file itself. -
run_in_shiny_app()now stops as soon as the app process stops, and shows its error output; it was waiting untiltimeout. It also fails when the port is already in use; the command was run against the other app. The app is now started with the ‘Rscript’ of the running R session instead of the first one found on the PATH. - On Windows,
docx2pdf(),docx_update()andpptx2pdf()now work with file paths containing non ASCII characters (e.g. Chinese characters). The PowerShell scripts are now written in UTF-8 with a BOM, Windows PowerShell was reading them with the ANSI code page and could not find the file, without any error (#8). -
docx2pdf(),pptx2pdf()anddocx_update()(and soto_pdf(),to_miniature()andexpect_snapshot_doc()) now wait for each other across R processes. ‘Word’ and ‘PowerPoint’ run as a single instance and simultaneous conversions, e.g. from parallel checks, were failing with “could not convert”. The new dependency ‘filelock’ is used for this.
Changes
- The visual tests (
expect_snapshot_doc()and the functions using it) compare images faster: identical files are no longer decoded, and pixels are compared by ‘ImageMagick’ (magick::image_compare_dist()) instead of in R. The measured ratio of different pixels is unchanged.
doconv 0.4.0
CRAN release: 2026-02-14
Features
- New exported function
run_in_shiny_app()to run an arbitrary command against a live Shiny application. Manages the app lifecycle (start, wait for HTTP readiness, stop) via processx; the command to execute is passed through...toprocessx::run(). - New exported functions
expect_snapshot_ggplots()andexpect_snapshot_flextables()for visual regression testing of ggplot2 plots and flextable objects within testthat test suites. - New exported helper
skip_if_not_snapshot_png()to skip tests when snapshot dependencies (ragg, gdtools) are not available. -
to_miniature()gainsncolandncol_landscapeparameters for easier page layout.ncolgroups pages N-per-row; addingncol_landscapeenables orientation-aware layout where portrait and landscape pages use different column counts.
Issues
- Forward slashes in file paths are now converted to backslashes before injection into PowerShell scripts, fixing failures when paths contain spaces (#5).
- PowerShell scripts now use
try/finallyto guaranteeWord.Quit()andPowerPoint.Quit()are called even when an error occurs, preventing orphan COM processes on Windows. -
Word.Visible = $Falseis now set before opening the document in PowerShell scripts, eliminating the brief window flash on startup. - PowerPoint’s
Presentations.Open()now usesWithWindow=$falseto open presentations without a visible window. - AppleScript scripts now use
try/on errorblocks to ensure cleanup (close document + conditional quit) runs even when an error occurs, and the error is re-raised so thatprocessx::run()sees a non-zero exit status. - File paths are now sanitized before injection into script templates:
sprintf()replaced bysub()to handle%in paths, and special characters (",`,$,\) are escaped for PowerShell and AppleScript respectively.
doconv 0.3.3
CRAN release: 2025-08-18
Issues
- Fail with informative error message if PowerShell (PS) execution strategy does not allow running PS scripts. PS scripts are required for certain actions on Windows (#2).
doconv 0.3.0
CRAN release: 2022-12-16
Features
- new function
expect_snapshot_html()for visual testing HTML documents. - new function
msoffice_available()to test if ‘Word’ and ‘PowerPoint’ are available.
doconv 0.2.0
CRAN release: 2022-11-28
Features
- new fonction
expect_snapshot_doc()for visual testing.
doconv 0.1.4
CRAN release: 2022-08-19
Features
- new fonction
docx_update()to refresh all TOC and fields. - new
dpiparameters for image resolution
Changes
- internals: png filenames are now defined with a correct mask
-
tools::R_user_dir()is used instead of package ‘rappdirs’.
doconv 0.1.3
CRAN release: 2021-05-19
Issues
- Export functions
init_working_directory,rm_working_directoryandworking_directoryto let users manage docx2pdf working directory and comply with CRAN policy. - Use
tempfile()to make libreoffice write in a temporary directory instead of using and managingworking_directory(). - fix for
working_directory()so that when deleted, no empty directory is left.
doconv 0.1.1
CRAN release: 2021-03-31
- Added
check_libreoffice_export()that checks ‘LibreOffice’ can export to PDF.
