xmpdf 0.3.1
CRAN release: 2026-08-25
New features
New
get_bookmarks_augmented()which augmentsget_bookmarks_pdftk()’s support for bookmark page numbers withget_bookmarks_pdftools()’s new support for whether bookmarks should start open or closed (#62).-
docinfo()objects now support arbitrary (non-standard) info dictionary entries (#7). Read/write support among the various backends is as follows:-
get_docinfo_pdftk()/set_docinfo_pdftk()support reading and writing them. -
get_docinfo_exiftool()/set_docinfo_exiftool()support reading and writing them. -
get_docinfo_pdftools()supports reading them. -
set_docinfo_gs()supports writing them.
-
Bug fixes and minor improvements
- Fixes
set_bookmarks()bug where tempfile wasn’t being deleted ifinput == output(@djvill, #63). -
get_bookmarks_pdftools()now reports positive/negativecount(as well asopen) usingpdftools::pdf_toc()’s newis_openlist element (#62). This requirespdftools(>= 3.8.0). -
get_bookmarks()now prefers the newget_bookmarks_augmented()when supported. - Calls to the
pdftkcommand-line tool to read bookmark/documentation info metadata now time out after 60s by default (configurable via thexmpdf_pdftk_timeoutoption) rather than being able to hang indefinitely on a pathological pdf outline.
xmpdf 0.2.1
CRAN release: 2024-03-29
New features
-
get_bookmarks_pdftools()gets pdf bookmark information usingpdftools::pdf_toc()(#30). Note though due to poppler library limitations it can’t return page numbers that correspond to each bookmark. Henceget_bookmarks()will try to use the following helper functions in the following order:
Bug fixes and minor improvements
- We can again disable old bookmarks when setting new bookmarks in
set_bookmarks_gs()for the newest versions ofghostscript(#59). The new approach means we could remove some GPLv3 code and have relicensed the package under the MIT license. - Improved support for reading/writing Unicode values in non-Unicode locales (#57).
-
get_bookmarks()andget_bookmarks_pdftk()no longer returns its data frame value invisibly.
xmpdf 0.1.4
CRAN release: 2023-10-02
- Unit tests have been adjusted to prevent a CRAN R CMD check ERROR on an M1 Mac machine running macOS 14 (#58).
xmpdf 0.1.3
CRAN release: 2023-02-26
Bug fixes and minor improvements
-
set_docinfo_exiftool()should now losslessly write all legal datetimes (#55).set_docinfo()’s priority order has been updated to the following: Unit tests have been adjusted to prevent CRAN R CMD check ERRORs on certain CRAN platforms that don’t have
ghostscriptinstalled or are ran in a non-Unicode locale (#56).
xmpdf 0.1.1
CRAN release: 2023-02-22
Initial features
cat_bookmarks()concatenates a list of bookmarks into a single bookmarks data frame while updating the page numbers. Useful if wanting to concatenate multiple pdf files together and would like to preserve the bookmarks information.-
get_bookmarks()returns a data frame with pdf bookmarks information.get_bookmarks()will try to use the following helper functions in the following order:-
get_bookmarks_pdftk()which wrapspdftkcommand-line tool
-
-
set_bookmarks()sets (replaces) pdf bookmarks information.set_bookmarks()will try to use the following helper functions in the following order:-
set_bookmarks_gs()which wrapsghostscriptcommand-line tool -
set_bookmarks_pdftk()which wrapspdftkcommand-line tool
-
docinfo()provides an R6 object to represent pdf documentation info entries.as_docinfo()can coerce objects intodocinfo()objects. In particular there is anas_docinfo.xmp()method to coercexmp()objects.-
get_docinfo()reads in pdf documentation info entries from pdf file(s).get_docinfo()will try to use the following helper functions in the following order:-
get_docinfo_pdftk()which wrapspdftkcommand-line tool -
get_docinfo_exiftool()which wrapsexiftoolcommand-line tool -
get_docinfo_pdftools()which wrapspdftools::pdf_info()
-
-
set_docinfo()sets pdf documentation info entries to a pdf file.set_docinfo()will try to use the following helper functions in the following order:-
set_docinfo_gs()which wrapsghostscriptcommand-line tool -
set_docinfo_pdftk()which wrapspdftkcommand-line tool -
set_docinfo_exiftool()which wrapsexiftoolcommand-line tool
-
-
xmp()provides an R6 object to represent xmp metadata.-
as_lang_alt()supports “language alternative” XMP tags.
-
as_xmp()can coerce objects intoxmp()objects. In particular there is anas_xmp.docinfo()method to coercedocinfo()objects.-
get_xmp()reads in xmp metadata from media file(s).get_xmp()will try to use the following helper functions in the following order:-
get_xmp_exiftool()which wrapsexiftoolcommand-line tool
-
-
set_xmp()sets xmp metadata in media file(s).set_xmp()will try to use the following helper functions in the following order:-
set_xmp_exiftool()which wrapsexiftoolcommand-line tool
-
-
cat_pages()concatenates (pdf) file(s) into a single output pdf.cat_pages()will try to use the following helper functions in the following order:-
cat_pages_qpdf()which wrapsqpdf::pdf_combine() -
cat_pages_pdftk()which wrapspdftkcommand-line tool -
cat_pages_gs()which wrapsghostscriptcommand-line tool
-
-
n_pages()returns the number of pages in the (pdf) file(s).n_pages()will try to use the following helper functions in the following order:-
n_pages_qpdf()which wrapsqpdf::pdf_length() -
n_pages_exiftool()which wrapsexiftoolcommand-line tool -
n_pages_pdftk()which wrapspdftkcommand-line tool -
n_pages_gs()which wrapsghostscriptcommand-line tool
-
-
The following functions detect support for various higher-level features:
-
The following functions detect support for various command-line tools needed for some lower-level helper functions:
-
supports_exiftool()detects support forexiftool -
supports_gs()detects support forghostscript -
supports_pdftk()detects support forpdftk
-
enable_feature_message()returns a character vector with the information needed to install the requested feature. Formatted for use withrlang::abort(),rlang::warn(), orrlang::inform().The
spdx_licensesdata set contains the SPDX License List.