出于对How to convert docx to PDF in r?的讨论的启发,我尝试使用以下代码将.docx转换为pdf。
pandoc <- "C:/Users/.../Pandoc/pandoc.exe"
input <- "C:/Users/.../abc.docx"
output <- "C:/Users/.../abc.pdf"
cmd <- sprintf('"%s" "%s" -o "%s"', pandoc, input, output)
shell(cmd)
但是,我收到“ execution failed with error code 1
”错误。
有什么解决方案?如果在R中运行此文件时遇到问题,该如何使用其他工具来做到这一点?
答案 0 :(得分:1)
我在使用此方法时一直遇到同样的问题-我只是无法使其正常工作。
但是,我确实找到了一种使用RDCOMClient将docx转换为PDF的方法。
library(RDCOMClient)
file <- "C:/path/to your/doc.docx"
wordApp <- COMCreate("Word.Application") # create COM object
wordApp[["Visible"]] <- TRUE #opens a Word application instance visibly
wordApp[["Documents"]]$Add() #adds new blank docx in your application
wordApp[["Documents"]]$Open(Filename=file) #opens your docx in wordApp
#THIS IS THE MAGIC
wordApp[["ActiveDocument"]]$SaveAs("C:/path/to your/new.pdf",
FileFormat=17) #FileFormat=17 saves as .PDF
wordApp$Quit() #quit wordApp
我在这里https://docs.microsoft.com/en-us/office/vba/api/word.wdexportformat
找到了FileFormat = 17位编辑:替代选项-通过Reticulate软件包在R中使用Python。这使用了pywin32 Python软件包。如果您没有它,可以使用此处的说明进行安装:https://rstudio.github.io/reticulate/articles/python_packages.html
我不太熟悉Python,但这在我的机器上有效。 见下文:
library(reticulate)
com <- import("win32com.client")
file <- "C:/path/to your/doc.docx"
wordPy <- com$gencache$EnsureDispatch("Word.Application")
wordPyOpen <- wordPy$Documents$Open(file)
wordPyOpen$SaveAs("C:/path/to your/doc.pdf",
FileFormat=17)
wordPy$Quit()
希望这会有所帮助!