Печать в 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.

См. также

SALE! 15%

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

Универсальная обработка для загрузки документов из Excel в 1С. Забудьте о ручном вводе: загружайте документы из Excel в 1С за секунды! Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С.

6000 руб.

09.11.2016    241554    1112    906    

1041

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

22200 руб.

06.10.2023    18753    49    19    

82

Печатные формы Программист Пользователь Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Научите вашу 1C печатать из 1С в файл Word (Например: трудовые договоры, договоры с контрагентами, спецификации, дополнительные соглашения, приказы, коммерческие предложения, акты, накладные, карточки партнера или любого справочника и многие другие). Универсальная печать предназначена для формирования печатных форм на основе шаблонов в формате Word из любой конфигурации 1С. С помощью данного инструмента можно самостоятельно заполнить шаблон реквизитами справочника или документа 1С и сформировать печатные формы на основании ссылки на любой объект.

3960 руб.

08.10.2019    48968    175    105    

171

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

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

14400 руб.

13.03.2018    62689    220    79    

120

Печатные формы Учет рабочего времени Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет Оперативный учет 1С:Бухгалтерия 3.0 Транспорт, автопарки, такси Россия Бухгалтерский учет Платные (руб)

Программа «Путевой лист грузового автомобиля в 1С:Бухгалтерия 3.0» - заполнить, распечатать, сохранить. Вы можете не только внести всю информацию и распечатать путевой лист грузового автомобиля в 1С, но и повторно использовать ранее введенные данные спустя любое время - данные путевого листа водителя сохраняются в "1С:Бухгалтерия 3.0" без каких-либо доработок.

4500 руб.

23.08.2019    58833    185    64    

178

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

Откройте для себя заполнение КС-2 и КС-3 в "1С:Бухгалтерия 3.0". Вы получаете удобство, скорость и систему, чтобы заполнить, распечатать и сохранить формы КС-2 и КС-3 из документов "Оказание производственных услуг" или "Реализация товаров услуг". Вы можете заполнить дополнительную информацию о материалах из документов "Требование-накладная" и указать сведения, которые не предусмотрены типовой конфигурацией "1С:Бухгалтерия 3.0". Так же доступно множество настроек для формирования КС-2 и КС-3.

4560 руб.

13.02.2019    101601    458    45    

441

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

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

13200 руб.

27.06.2023    4798    16    2    

17

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

Учет путевых листов выполнен в виде расширения. Предназначен для учета путевых листов в конфигурации БП 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 спец., ПЛ для Автомобильного крана.

3600 руб.

14.10.2019    40182    275    216    

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

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