База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как конв. Word в PDF из 1С с помощью wkhtmltopdf? › Ответ в теме: Как конв. Word в PDF из 1С с помощью wkhtmltopdf?
wkhtmltopdf не умеет напрямую конвертировать файлы Word (.doc или .docx) в PDF, он работает только с HTML. Поэтому для преобразования Word в PDF с помощью wkhtmltopdf из 1С нужно сначала сохранить документ Word в формате HTML, а затем уже конвертировать этот HTML в PDF.
Вариант решения:
1. Через COM-объект Microsoft Word из 1С открыть файл Word и сохранить его как HTML:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
ПутьКФайлуWord = ПолучитьВременныйКаталог() + "file.docx"; ПутьКФайлуHTML = ПолучитьВременныйКаталог() + "file.html"; Если ТипПлатформы() = ТипПлатформы.ПредприятиеUnix Тогда // Аналог COMОбъекта для Unix не поддерживается, выбросим исключение или обработаем иначе Ошибка("COMОбъект Word.Application не поддерживается в Unix-клиенте"); Иначе WordApp = Новый COMОбъект("Word.Application"); WordApp.Visible = Ложь; ФорматHTML = 8; // Константа для формата HTML Документ = WordApp.Documents.Open(ПутьКФайлуWord); Документ.SaveAs(ПутьКФайлуHTML, ФорматHTML); Документ.Close(); WordApp.Quit(); КонецЕсли; |
2. Запустить wkhtmltopdf из 1С, чтобы преобразовать полученный HTML в PDF:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
ВременнаяПапка = ПолучитьВременнуюПапку(); ПутьКWkhtmltopdf = ВременнаяПапка + "wkhtmltopdf.exe"; ПутьКHTML = ПутьКФайлуHTML; ПутьКPDF = ВременнаяПапка + "file.pdf"; Команда = """" + ПутьКWkhtmltopdf + """ """ + ПутьКHTML + """ """ + ПутьКPDF + """"; КодВозврата = 0; ЗапуститьПриложение(Команда, , Истина, КодВозврата); Если КодВозврата <> 0 Тогда Сообщить("Ошибка конвертации HTML в PDF через wkhtmltopdf"); КонецЕсли; |
3. В итоге получите PDF-файл по указанному пути.
Обратите внимание, что при сохранении Word в HTML могут возникнуть проблемы с форматированием и изображениями. Если у вас установлен Microsoft Word, для более надежной конвертации лучше использовать его метод ExportAsFixedFormat, который сразу сохраняет Word в PDF:
|
1 2 3 4 5 6 7 8 |
ПутьКPDF = ПолучитьВременныйКаталог() + "file.pdf"; WordApp = Новый Объект("Word.Application"); WordApp.Visible = Ложь; Документ = WordApp.Documents.Open(ПутьКФайлуWord); ФорматPDF = 17; Документ.ExportAsFixedFormat(ПутьКPDF, ФорматPDF); Документ.Close(); WordApp.Quit(); |
Если же принципиально нужно использовать именно wkhtmltopdf, то только через промежуточный HTML.