You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.5 KiB
41 lines
1.5 KiB
#' Convert a Document (usually PowerPoint) to a PDF
|
|
#'
|
|
#' @md
|
|
#' @param path path to the document, can be PowerPoint or DOCX
|
|
#' @param pdf_file output PDF file name. By default, creates a PDF in the
|
|
#' same directory as the `path` file.
|
|
#' This functionality requires the use of
|
|
#' LibreOffice and the `soffice` binary it contains. See
|
|
#' [set_libreoffice_path] for more information. Note,
|
|
#' @export
|
|
#' @examples
|
|
#' \dontrun{
|
|
#' path = system.file("examples/ex.pptx", package="docxtractr")
|
|
#' pdf <- convert_to_pdf(path, pdf_file = tempfile(fileext = ".pdf"))
|
|
#' path = system.file("examples/data.docx", package="docxtractr")
|
|
#' pdf_doc <- convert_to_pdf(path, pdf_file = tempfile(fileext = ".pdf"))
|
|
#' }
|
|
convert_to_pdf <- function(path, pdf_file = sub("[.]pptx", ".pdf", path)) {
|
|
stopifnot(is_pptx(path) | is_doc(path) | is_docx(path))
|
|
|
|
lo_assert()
|
|
lo_path <- getOption("path_to_libreoffice")
|
|
|
|
# making temporary file because by default soffice
|
|
# will make sub("[.]pptx", ".pdf", path) output
|
|
# and don't want to do that in case pdf_file in other location
|
|
cp_path = tempfile(fileext = ".pptx")
|
|
cp_pdf = sub("[.](pptx|docx|doc)$", ".pdf", cp_path)
|
|
file.copy(path, cp_path)
|
|
|
|
if (Sys.info()["sysname"] == "Windows") {
|
|
convert_win(lo_path, dirname(cp_path), cp_path, convert_to = "pdf")
|
|
} else {
|
|
convert_osx(lo_path, dirname(cp_path), cp_path, convert_to = "pdf")
|
|
}
|
|
if (!file.exists(cp_pdf)) {
|
|
stop("Conversion from PPTX to PDF did not succeed")
|
|
}
|
|
file.copy(cp_pdf, pdf_file)
|
|
return(pdf_file)
|
|
}
|
|
|