我已经使用officer包创建了powerpoint文件,我还想从R将它们保存为pdf(不想手动打开每个文件并将其另存为pdf)。这可能吗?
您可以保存使用此处发布的代码编辑的powerpoint对象:使用officer除了word docx之外还创建pdf。
您需要先安装pdftools
和libreoffice
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")
请注意,
officer
包的作者是推荐某人此回复的人。
Corey Pembleton 的答案具有 LibreOffice iOS 路径。 (我个人最初没有注意到)。 Windows 路径类似于 "C:/Program Files/LibreOffice/program/soffice.exe"
。由于 Corey 提供了最初的答案,现在可以在此处找到使用
docxtractr::convert_to_pdf
的示例。 包和函数是 John M 在 Corey 初始答案中评论的。
convert_to_pdf
包中的
docxtractr
函数。注意:此解决方案需要从此处下载 LibreOffice。我使用了以下顺序。 首先,我需要设置 LibreOffice 和 soffice.exe 的路径
library(docxtractr)
set_libreoffice_path("C:/Program Files/LibreOffice/program/soffice.exe")
其次,我设置要转换为pdf的PowerPoint文档的路径。
pptx_path <- "G:/My Drive/Courses/Aysem/Certifications/September17_Part2.pptx"
第三,使用convert_to_pdf
函数进行转换。
pdf <- convert_to_pdf(pptx_path, pdf_file = tempfile(fileext = ".pdf"))
这里要小心。转换后的 pdf 文件保存在本地临时文件夹中。这是我给你一个想法。只需从临时文件夹中复制它即可。
"C:\\Users\\MEHMET~1\\AppData\\Local\\Temp\\RtmpqAaudc\\file3eec51d77d18.pdf"
编辑:查找转换后的 pdf 保存位置的快速解决方案。只需将第三步替换为以下代码行即可。您可以设置要保存的路径。您不需要寻找奇怪的本地临时文件夹。
pdf <- convert_to_pdf(pptx_path, pdf_file = sub("[.]pptx", ".pdf", pptx_path))
library(RDCOMClient)
path1 <- "D:\\my_Power_Point.pptx"
path2 <- "D:\\my_Power_Point_In_PDF_Format.pdf"
pptapp <- COMCreate("PowerPoint.Application")
pptapp[["Visible"]] <- TRUE
pptpres <- pptapp$Presentations()$Open(path1)
pptpres$SaveAs(path2, FileFormat = 32)