如何在R中将officer编辑的文件直接保存为PDF格式?
解决方案:用R直接将officer生成的表单转为PDF(无需额外办公套件)
可以使用doconv包结合pandoc(RStudio默认自带)实现直接转换,无需保存中间docx文件,完全满足需求。
步骤1:安装并加载所需包
install.packages("doconv") library(doconv) library(officer) library(glue)
步骤2:修改代码实现直接输出PDF
替换你原有的保存docx代码,直接将formularz(officer生成的rdocx对象)转为PDF:
# 定义PDF输出的路径和个性化文件名 output_dir <- "*/Formularze" pdf_file <- glue::glue("{output_dir}/Formularz - {inputs$name}.pdf") # 直接转换并保存PDF,无需生成中间docx convert_docx(formularz, output = pdf_file)
关键说明
convert_docx()支持直接接收officer的rdocx对象,跳过保存docx的步骤,直接生成PDF,既节省时间又避免冗余文件。- 无需来回切换工作目录,直接通过完整路径指定输出位置,代码更简洁稳定。
- 依赖的pandoc通常随RStudio一起安装,可通过
rmarkdown::pandoc_available()检查是否可用;若未安装,可单独安装pandoc或安装RStudio。
备选方案(临时保存docx后删除)
如果遇到复杂格式转换问题,可先临时保存docx,转换后自动删除:
output_dir <- "*/Formularze" temp_docx <- glue::glue("{output_dir}/temp_{inputs$name}.docx") pdf_file <- glue::glue("{output_dir}/Formularz - {inputs$name}.pdf") # 临时保存docx print(formularz, target = temp_docx) # 转换为PDF convert_docx(temp_docx, output = pdf_file) # 删除临时docx file.remove(temp_docx)
内容的提问来源于stack exchange,提问作者Pawek-13
相关产品推荐
相关产品推荐

