Печать в word, pdf через html

11.09.20

Учетные задачи - Печатные формы

При работе с клиентами возникла задача: использовать форматированный документ. Итак, существует справочник, в нем табличная часть. Для каждой строки требуется ввести описание, причем описание имеет тип форматированный документ. Потребовалось организовать печать табличной части справочника с описанием для каждой строки. Тип данных "Форматированный документ" не может выводится в табличный документ, поэтому пришлось организовывать печать через Microsoft Word.

Постановка задачи

При работе с клиентами возникла задача: использовать форматированный документ. Итак, существует справочник, в нем табличная часть. Для каждой строки требуется ввести описание, причем описание имеет тип форматированный документ. Потребовалось организовать печать табличной части справочника с описанием для каждой строки. Тип данных "Форматированный документ" не может выводится в табличный документ, поэтому пришлось организовывать печать через Microsoft Word. Для этого требуется:

  • Сформировать html-файл. Сохранить его во временные файлы, создать временный каталог и выгрузить туда картинки и прочие файлы.
  • Открыть html с помощью Microsoft Word и сохранить в pdf.

Все это требуется сделать программно.  

 

1. Формирование временного файла html. 

Один из самых простых, но определяющих внешний вид печатной формы этап. Вот пример формирования простого файла html:

&НаКлиенте
Процедура Тест(Команда)
	// Формируем текстовый файл
	ТекстHTML = Новый ТекстовыйДокумент;
	ТекстHTML.ДобавитьСтроку("<html>");
	ТекстHTML.ДобавитьСтроку("<body>");
	ТекстHTML.ДобавитьСтроку("<div>");
	ТекстHTML.ДобавитьСтроку("Привет мир!");
	// Сюда можно добавить произвольную информацию
	ТекстHTML.ДобавитьСтроку("</div>");
	ТекстHTML.ДобавитьСтроку("</body>");
	ТекстHTML.ДобавитьСтроку("</html>");
	
	// Получаем имя временного файла
	// Файл сохраняем в формате 'doc' для открытия его с помощью Microsoft Word
	ИмяВрФайла = ПолучитьИмяВременногоФайла("doc");
	//Записываем текстовый файл
	ТекстHTML.Записать(ИмяВрФайла);
	//Открываем файл
	ЗапуститьПриложение(ИмяВрФайла);
КонецПроцедуры

Из типа данных "Форматированный документ" легко получить html строку и вставить её в html файл. Причем это можно сделать и с учетом картинок. Вот пример кода:

//Для хранения картинок html-файла требуется создать дополнительный каталог
Каталог = КаталогВременныхФайлов();
ИмяВрФайла = ПолучитьИмяВременногоФайла("doc");
ИмяФайлаБезРасширения = СтрЗаменить(ИмяВрФайла,КаталогВременныхФайлов(),"");
ИмяФайлаБезРасширения = СтрЗаменить(ИмяФайлаБезРасширения,".doc","");
ИмяВременногоКаталога = ИмяФайлаБезРасширения + ".files";
ДопКаталог = Каталог + ИмяВременногоКаталога;
СоздатьКаталог(ДопКаталог);
	
СтруктураКартинок = Новый Структура;
// Получаем html текст из форматированного документа
ТекстДокумента = "";
ФорматированныйДокумент.ПолучитьHTML(ТекстДокумента,СтруктураКартинок);
// Записываем картинки во временный каталог и меняем путь в тексте html
Для каждого ЭлементСтруктуры Из СтруктураКартинок Цикл
	ФорматТекущейКартинки = ЭлементСтруктуры.Значение.Формат();
	Если Не ФорматТекущейКартинки = ФорматКартинки.НеизвестныйФормат Тогда
		//Записываем картинку во временный каталог
		ФорматТекущейКартинкиСтрока = Строка(ФорматТекущейКартинки);
		ИмяТемпФайла = ДопКаталог + "/" + ЭлементСтруктуры.Ключ+ "." + ФорматТекущейКартинкиСтрока;
		ЭлементСтруктуры.Значение.Записать(ИмяТемпФайла);
		// Меняем пусть в html тексте
		ТекстДокумента = СтрЗаменить(ТекстДокумента, "src=""" + ЭлементСтруктуры.Ключ + """", "src=""" + ИмяВременногоКаталога +"/" + ЭлементСтруктуры.Ключ+ "." + ФорматТекущейКартинкиСтрока+"""");
	КонецЕсли;
КонецЦикла;
	
// Добавляем в html-документ
ТекстHTML.ДобавитьСтроку(ТекстДокумента);

В html-документ можно передавать данные с учетом форматирования. В Microsoft Word существуют свои особенности. Так например следующая конструкция формирует строку курсивом и шрифтом "Times New Roman":

<p><em>Произвольный текст</em></p>

Подробно на форматах останавливаться не буду. В интернете существуют множество онлайн сервисов, в которых можно получить требуемый формат вывода. (Например: https://wordhtml.com/).

2. Открытие html с помощью Microsoft Word и сохранение в pdf

Средствами Microsoft Word возможно сохранение файла html в другие форматы (в том числе в pdf). Для данной операции использовалась следующая конструкция:

Попытка
	
	// Создание com объекта
	ОбъектВорд = Новый COMОбъект("Word.Application");
	// Открытие файла
	ОбъектВорд.Documents.add(ИмяВременногоФайла);
	// Запрет отображения окна и диалогов
	ОбъектВорд.Application.DisplayAlerts = -1;
	ОбъектВорд.Application.Visible = Ложь;    
	
	//Получение ссылки на открытый документ		
	ДокументВорд = ОбъектВорд.Application.Documents(1);
	
	// Получение временного имени файла		
	ИмяВрФайлаPdf = ПолучитьИмяВременногоФайла("pdf");
	
	//Сохранить как Тип файла pdf-17
	ДокументВорд.SaveAs2(ИмяВрФайлаPdf,17);
	
	// Запрет отображения окна и диалогов
	ДокументВорд.Application.DisplayAlerts = -1;
	ДокументВорд.Application.Visible = Ложь;    
	
	// Закрытие документа
	ДокументВорд.Application.Quit(0);
	//Выход из com объекта
	ОбъектВорд.Application.Quit();
	
Исключение
	
КонецПопытки;

//Открытие pdf файла
ЗапуститьПриложение(ИмяВрФайлаPdf);

После открытия файлов не следует забывать об удалении временных файлов.

Вступайте в нашу телеграмм-группу Инфостарт

Печать форматированного документа Microsoft word pdf.

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    37390    98    43    

117

Печатные формы НДС 22% 1С 8.3 1С:Управление торговлей 10 1С:Управление производственным предприятием Бухгалтерский учет Налоговый учет Платные (руб)

Решение для работы с новой графой 5б в УПД и Счете-фактуре с 01.04.2026 года для конфигураций 1С:УТ 10.3, 1С:УПП 1.3 и 1С:КА 1.1. Обеспечивает корректную печать универсальных передаточных документов и счетов-фактур в соответствии с изменениями в статье 169 НК РФ, заполняет обязательные поля - порядковый номер и дату авансового счета-фактуры при зачете предоплаты. Подключается как внешняя печатная форма в конфигурацию 1С, поддерживает все стандартные требования и имеет открытый исходный код для адаптации под ваши бизнес-процессы.

6100 руб.

19.12.2025    5183    42    27    

42

Печатные формы Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Транспорт, автопарки, такси Бухгалтерский учет Платные (руб)

Учет путевых листов выполнен в виде расширения. Предназначен для учета путевых листов в конфигурации БП 3.0., УТ 11.5 и КА 2.5 Печатная форма: Типовая межотраслевая форма № 3. Утверждена постановлением Госкомстата России от 28.11.97 № 78. Типовая межотраслевая форма № 4-П от 18.09.2008 г. N 152 с учетом изменений указанных в Приказе Министерства транспорта Российской Федерации №368 от 11 сентября 2020 г. №368, Типовая межотраслевая форма № ЭСМ-7, и др. ЭСМ-2, 4-С, 3 спец., 6 спец., ПЛ для Автомобильного крана.

5000 руб.

14.10.2019    45526    325    216    

230

Печатные формы Взаиморасчеты Оптовая торговля Производство готовой продукции (работ, услуг) Акт сверки Бухгалтер Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Задайте для каждой организации свою печать и для каждого физического лица свою подпись. Выберите в документе печатную форму "... с печатью и подписью" - и автоматически сформируется табличный документ с печатью и подписями той организации и ответственных лиц, которые указаны в документе.

17080 руб.

13.03.2018    69310    259    80    

121

Печатные формы Бухгалтер Пользователь 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Расширение для печати договоров с приложением из шаблонов. Быстрая подготовка заполненных договоров без ручного заполнения. Возможность использования дополнительных реквизитов контрагентов и номенклатуры Быстрое сохранение файлов договоров и отправка по электронной почте. Решение в Реестре отечественного ПО.

15000 руб.

20.04.2016    68143    195    107    

108

Печатные формы Логистика, склад и ТМЦ Бухгалтер 1С:Предприятие 8 1С:Комплексная автоматизация 2.х Транспорт, автопарки, такси Оптовая торговля, дистрибуция, логистика Россия Бухгалтерский учет Управленческий учет Платные (руб)

Программа для автоматизации учета путевых листов в 1С - расширение, добавляющее в конфигурацию "Комплексная автоматизация", документ Путевой лист и печатные формы установленных образцов для легковых и грузовых авто, расчет и списание нормативного количества топлива, отчет "Реестр путевых листов" с отбором по автомобилю и по водителю (через настройки) Позволит контролировать расход топлива, потому что сразу будет виден сверхнормативный расход.

13420 руб.

27.06.2023    8078    26    2    

27

Печатные формы Производство готовой продукции (работ, услуг) Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бухгалтерский учет Платные (руб)

Расширение «Заказ-наряд в 1С 8.3 Бухгалтерия» добавляет в систему документ "Заказ-наряд" и справочник "Изделия". При этом не требуется вносить изменения в конфигурацию. "Заказ-наряд" фиксирует запрос на работы от клиента и подтверждает факт выполнения работ этих работ.

5246 руб.

31.01.2023    15647    59    10    

60
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. malikov_pro 1355 11.09.20 13:39 Сейчас в теме
Если используете word почему напрямую в него не пишете?
Какого формата шаблоны используете?
Если нужно сформировать pdf из html на сервере, то вариант поднять npm и использовать html2pdf.js
2. arr 293 11.09.20 13:47 Сейчас в теме
(1) Напрямую не пишу, потому что цель была вывести на печать Форматированный документ.
Я не знаком с html2pdf.js. Будет время изучу. Более того в документе использовались колонтитулы Word. И, по моему, проще было сконвертировать сначало в word, а из него в pdf.
3. lsg45 15.09.20 10:56 Сейчас в теме
Вывод напрямую в Word достаточно медленная процедура. Формировал документ, состоящий из таблиц с различным количеством колонок и различным форматированием объемом 100 листов в течении 4 часов !!!

Вывод через HTML позволит сократить это время?
4. arr 293 15.09.20 11:10 Сейчас в теме
(3) Да позволит. Заметил что это быстрее работает чем напрямую. На сколько быстрее не засекал.
Для отправки сообщения требуется регистрация/авторизация