Экспорт печатных форм и любых данных из 1С в BMP, JPEG, PCX, PDF, PNG и TIFF. - 1С-ИнтеГрация

Экспорт печатных форм и любых данных из 1С в BMP, JPEG, PCX, PDF, PNG и TIFF.



Оптимальным решением является установка Bullzip PDF Printer . После установки в системе появляется виртуальный принтер, с помощью которого можно "печатать" в файл pdf из любого приложения. Программа бесплатная, работает в терминале и имеет поддержку русского языка. 
После установки, можно печатать напрямую используя код:
 

Код 1C v 8.х

 

//Таб - ТабличныйДокумент

//ИмяФайла – путь для сохранения файла PDF  (например «D:\Torg12.pdf»)

Процедура СоздатьФайлПДФ(Таб, ИмяФайла)

 

Попытка

ПДФПринтер = Новый ComObject(«Bullzip.PDFPrinterSettings»);

ПДФПринтер.SetValue(«output», ИмяФайла);

ПДФПринтер.SetValue(«ShowSaveAS», «never»);

ПДФПринтер.SetValue(«ShowProgress», «no»);

ПДФПринтер.SetValue(«ShowProgressFinished», «no»);

ПДФПринтер.SetValue(«ShowSettings», «never»);

ПДФПринтер.SetValue(«ShowPDF», «no»);

ПДФПринтер.SetValue(«ConfirmOverwrite»,»no»);

ПДФПринтер.WriteSettings();

Таб.Автомасштаб = Истина;

Таб.ИмяПринтера = «Bullzip PDF Printer»;Таб.Напечатать(Истина);

PDFФайл = Новый Файл(ИмяФайла);

 

Пока НЕ PDFФайл.Существует() Цикл

ОбработкаПрерыванияПользователя();

КонецЦикла;

 

Исключение

 

Сообщить(ОписаниеОшибки());

Сообщить(«Скорее всего необходимо установить или переустановить «»Bullzip PDF Printer»);

КонецПопытки;

//устанавливаем принтер по умолчанию

Таб.ИмяПринтера = ПолучитьПринтерПоУмолчанию();

КонецПроцедуры  


Здесь функция
 ПолучитьПринтерПоУмолчанию() нужна для того чтобы вернуть печатной форме принтер по умолчанию, т.к. если напечатать без предварительного просмотра то печать пойдет на виртуальный PDF принтер BullzipPDFPrinter. 
Код 1C v 8.х

 //получаем принтер по умолчанию

Функция ПолучитьПринтерПоУмолчанию()

 

Скрипт = Новый ComObject(«MSScriptControl.ScriptControl»);

Скрипт.Language = «vbscript»;

Скрипт.AddCode(»

|Function GetDefaultPrinter()

|GetDefaultPrinter=vbNullString

|Set objWMIService=GetObject(«»winmgmts:»" _

|& «»{impersonationLevel=impersonate}!\\.\root\cimv2″»)

|Set colInstalledPrinters=objWMIService.ExecQuery _

|(«»select * from Win32_Printer»")

|For Each objPrinter in colInstalledPrinters

|If objPrinter.Attributes and 4 Then

|GetDefaultPrinter=objPrinter.Name

|Exit For

|End If

|Next

|End Function»);

Возврат СокрЛП(Скрипт.run(«GetDefaultPrinter»));

КонецФункции  

 


немного дополню: 
1. После установки дистрибутива сам булзиповский принтер не устанавливается, и нигде нет inf-файла чтобы установить его вручную. Решается просто: берем любой ненужный установленный принтер и в свойствах меняем ему порт и драйвер на BullZip. 
2. У меня не заработал пример пока я не вставил команду ПДФПринтер.SetPrinterName(<имя принтера>); 
3. Полдня мучился, искал имена параметров для их установки в конструкции ПДФПринтер.SetValue(<имя параметра>,<значение параметра>); - решается так: 
меняем в конфигураторе ПДФПринтер.SetValue("ShowSaveAS", "never"); на 
ПДФПринтер.SetValue("ShowSaveAS", "always"); 
и когда выскочит окно с параметрами будет окошко где можно создавать профили, создаем, и вытаскиваем ini-файл по пути который там написан. вот для ленивых мой: 
[PDF Printer] 
output=<desktop>\<smarttitle>.tif 
confirmoverwrite=no 
appendifexists=no 
rememberlastfilename=no 
rememberlastfoldername=no 
openfolder=no 
showpdf=no 
showsaveas=never 
showsettings=never 
suppresserrors=no 
device=tiffg4 
resx=150 
resy=150 
textalphabits=4 
graphicsalphabits=4 
author= 
title= 
subject= 
keywords= 
usedefaultauthor=no 
usedefaulttitle=no 
target=default 
compatibilitylevel=1.5 
zoom=fitall 
format= 
linearize=no 
usethumbs=no 
watermarktext= 
watermarkfontsize=45 
watermarkrotation=c2c 
watermarkcolor=#D9D9D9 
watermarkfontname=ARIAL.TTF 
watermarkoutlinewidth=2 
watermarklayer=top 
watermarkverticalposition=center 
watermarkhorizontalposition=center 
watermarkverticaladjustment= 
watermarkhorizontaladjustment= 
mergefile= 
mergeposition=bottom 
superimpose= 
superimposeresolution= 
superimposelayer=bottom 
ownerpassword= 
userpassword= 
keylength=128 
permissions=

 



Назад в раздел