我正在一个循环中使用官员(曾经使用过记者)来创建150个唯一文档。我需要将这些文档从R导出为word docx和pdfs。
是否可以将用官员创建的文档导出为pdf?
答案 0 :(得分:1)
这是可能的,但是我的解决方案取决于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")
答案 1 :(得分:1)
有一种方法可以将您的docx
转换为pdf
。 docxtractr
包中有一个函数convert_to_pdf
。
请注意,此函数正在使用LibreOffice将docx
转换为pdf
。因此,您必须先安装LibreOffice,然后将路径写入soffice.exe
。详细了解不同操作系统here的路径。
这是一个简单的示例,说明如何在Windows计算机上将多个docx
文档转换为pdf
。我已安装Windows 10和LibreOffice 6.4。试想一下,您有X
个Word文档存储在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))
答案 2 :(得分:0)
我一直在使用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
我在这里https://docs.microsoft.com/en-us/office/vba/api/word.wdexportformat
找到了FileFormat = 17位我已经能够将上述内容放入一个循环中,从而将多个docx快速转换为PDF。
希望这会有所帮助!