Создать PDF в дополнение к слову DOCX, используя офицер
Я использую сотрудник (используется для использования репортеров) в цикле для создания 150 уникальных документов. Однако мне нужно, чтобы эти документы были экспортированы из R в виде слова docx И pdfs.
Есть ли способ экспортировать документ, созданный с офицером в PDF?
1 ответ
Это возможно, но решение, которое у меня есть, зависит от libreoffice. Вот код, который я использую. Надеюсь, это поможет. Я жестко запрограммировал путь к libreoffice, тогда вам, вероятно, придется адаптировать или улучшить код для переменной cmd_
,
Код преобразует файл PPTX или DOCX в PDF.
library(pdftools)
office_shot <- function( file, wd = getwd() ){
cmd_ <- sprintf(
"/Applications/LibreOffice.app/Contents/MacOS/soffice --headless --convert-to pdf --outdir %s %s",
wd, file )
system(cmd_)
pdf_file <- gsub("\\.(docx|pptx)$", ".pdf", basename(file))
pdf_file
}
office_shot(file = "your_presentation.pptx")
Я использую RDCOMClient для преобразования документов, созданных в OfficeR, в PDF-файлы.
library(RDCOMClient)
file <- "C:/path/to your/doc.docx"
wordApp <- COMCreate("Word.Application") #creates COM object
wordApp[["Documents"]]$Open(Filename=file) #opens your docx in wordApp
wordApp[["ActiveDocument"]]$SaveAs("C:/path/to your/doc.pdf"), FileFormat=17) #saves as PDF
wordApp$Quit() #quits the COM Word application
Я нашел FileFormat=17 бит здесь https://docs.microsoft.com/en-us/office/vba/api/word.wdexportformat
Я был в состоянии поместить вышеупомянутое в цикл, чтобы также быстро конвертировать несколько документов в PDF.
Надеюсь это поможет!
Есть способ конвертировать ваши
docx
в
pdf
. Есть функция
convert_to_pdf
из docxtractr
пакет.
Обратите внимание, что эта функция использует LibreOffice для преобразования
docx
к
pdf
. Поэтому вам нужно установить LibreOffice раньше и написать путь к
soffice.exe
. Подробнее о путях для разных ОС читайте здесь.
Вот простой пример, как преобразовать несколько
docx
документы в
pdf
на машине с Windows. У меня установлены Windows 10 и LibreOffice 6.4. Представьте себе, что у вас есть
X
Документы Word, хранящиеся в
data
папку, и вы хотите создать такое же количество PDF в
data/pdf
папку (предварительно вам необходимо создать папку pdf).
library(dplyr)
library(purrr)
library(docxtractr)
# You have to show the way to the LibreOffice before
set_libreoffice_path("C:/Program Files/LibreOffice/program/soffice.exe")
# 1) List of word documents
words <- list.files("data/",
pattern = "?.docx",
full.names = T)
# 2) Custom function
word2pdf <- function(path){
# Let's extract the name of the file
name <- str_remove(path, "data/") %>%
str_remove(".docx")
convert_to_pdf(path,
pdf_file = paste0("data/pdf/",
name,
".pdf"))
}
# 3) Convert
words %>%
map(~word2pdf(.x))