R - 除了使用 Officer 创建 Word docx 之外的 PDF



我在一个循环中使用官员(用于使用记者(来创建 150 个独特的文档。但是,我需要将这些文档从R导出为word docx和pdf。

有没有办法将与官员一起创建的文档导出为 pdf?

这是可能的,但我的解决方案取决于 libreoffice。这是我正在使用的代码。希望它会有所帮助。我已经硬编码了 libreoffice 路径,那么您可能必须调整或改进变量cmd_的代码。

该代码正在将 PPTX 或 DOCX 文件转换为 PDF。

library(pdftools)
office_shot <- function( file, wd = getwd() ){
cmd_ <- sprintf(
"/Applications/LibreOffice.app/Contents/MacOS/soffice --headless --convert-to pdf --outdir %s %s",
wd, file )
system(cmd_)
pdf_file <- gsub("\.(docx|pptx)$", ".pdf", basename(file))
pdf_file
}
office_shot(file = "your_presentation.pptx")

我一直在使用RDCOMClient将我的OfficeR创建的docx转换为PDF。

library(RDCOMClient)
file <- "C:/path/to your/doc.docx"
wordApp <- COMCreate("Word.Application") #creates COM object
wordApp[["Documents"]]$Open(Filename=file) #opens your docx in wordApp
wordApp[["ActiveDocument"]]$SaveAs("C:/path/to your/doc.pdf"), FileFormat=17) #saves as PDF 
wordApp$Quit() #quits the COM Word application

我在这里找到了文件格式= 17位 https://learn.microsoft.com/en-us/office/vba/api/word.wdexportformat

我已经能够将上述内容放在一个循环中,以快速将多个docx转换为PDF。

希望这有帮助!

有一种方法可以将您的docx转换为pdfdocxtractr包中有一个函数convert_to_pdf

请注意,此函数正在使用 LibreOffice 将docx转换为pdf。所以你必须先安装 LibreOffice 并写入soffice.exe的路径。在此处阅读有关不同操作系统路径的更多信息。

下面是一个简单的示例,如何在 Windows 计算机上将多个docx文档转换为pdf。我安装了Windows 10和LibreOffice 6.4。想象一下,您XWord 文档存储在data文件夹中,并且您想在data/pdf文件夹中创建相同数量的 PDF(您必须在之前创建 pdf 文件夹(。

library(dplyr)
library(purrr)
library(docxtractr)
# You have to show the way to the LibreOffice before
set_libreoffice_path("C:/Program Files/LibreOffice/program/soffice.exe")
# 1) List of word documents
words <- list.files("data/",
pattern = "?.docx",
full.names = T)
# 2) Custom function
word2pdf <- function(path){

# Let's extract the name of the file
name <- str_remove(path, "data/") %>% 
str_remove(".docx")

convert_to_pdf(path,
pdf_file = paste0("data/pdf/",
name,
".pdf"))

}
# 3) Convert
words %>%
map(~word2pdf(.x))

相关内容

  • 没有找到相关文章

最新更新