Печать в 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! 20%

Загрузка и выгрузка в Excel Оптовая торговля Печатные формы Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 Конфигурации 1cv8 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 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С одним нажатием. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

6000 5100 руб.

09.11.2016    231164    1046    896    

991

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

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

18000 руб.

06.10.2023    14013    36    7    

69

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

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

13200 руб.

27.06.2023    3449    10    1    

10

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

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

14400 руб.

13.03.2018    59480    202    76    

120

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

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

3600 руб.

13.02.2019    94200    430    44    

412

Печатные формы Бухгалтер Платформа 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    38325    248    216    

158

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

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

5400 руб.

08.10.2019    46112    160    90    

156

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

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

2520 руб.

18.02.2019    63725    202    14    

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

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