使用pandoc

时间:2018-08-21 22:03:08

标签: r r-markdown pandoc

出于对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中运行此文件时遇到问题,该如何使用其他工具来做到这一点?

1 个答案:

答案 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()

希望这会有所帮助!