无需LibreOffice,如何通过R的officer包将Word文档转PDF(受限环境)
不用LibreOffice,把officer生成的Word转PDF的几种方法
Windows环境下调用Microsoft Word的COM接口
如果你用的是Windows且装了正版Word,直接用doconv包调用Word后台服务就行,不用额外装软件。代码示例:library(officer) library(doconv) # 生成Word文档 doc <- read_docx() %>% body_add_par("测试内容") %>% print(target = "test.docx") # 转PDF(use_com参数启用Word COM) docx_to_pdf("test.docx", output = "test.pdf", use_com = TRUE)注意:要保证当前用户有权限调用Word的COM接口,一般正版Office默认是开启的。
跳过Word,直接用rmarkdown生成PDF
如果业务允许,没必要先做Word再转PDF。用rmarkdown配合自带的pandoc直接生成PDF更高效,还能保留格式。比如把原本用officer整理的内容改成markdown格式,再渲染:library(rmarkdown) # 写markdown内容(可以把officer里的内容转成markdown语法) md_content <- "--- title: '业务文档' output: pdf_document --- 这是文档正文内容,支持标题、列表等格式" writeLines(md_content, "business_doc.md") render("business_doc.md", output_format = "pdf_document")轻量方案:解析Word XML生成PDF
要是你的Word文档结构简单(纯文本为主),可以直接解析docx的XML结构提取内容,再用pdftools生成PDF。这种方法完全不依赖Office软件,但复杂格式(比如表格、图片)处理起来麻烦:library(xml2) library(pdftools) # 读取docx的XML内容 docx_xml <- read_xml("test.docx") # 提取所有文本内容 text_content <- xml_text(xml_find_all(docx_xml, "//w:t")) # 把文本拼接后生成PDF pdf_write(paste(text_content, collapse = "\n"), "test.pdf")
内容的提问来源于stack exchange,提问作者Dontai Lewis
相关产品推荐
相关产品推荐

