You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 12:31:06