v8.x: Печать в PDF - 1С-ИнтеГрация

v8.x: Печать в PDF



Столкнулся с вопросом печати счета на оплату сразу в pdf. 
Решение: установка виртуального принтера 
bioPDF скачать можно тут. И прописывание в 1с следующего кода: 

Код 1C v 8.х

 
    Попытка
        ПДФ_принтер = Новый COMОбъект("bioPDF.PDFPrinterSettings");
    Исключение
        #Если Клиент Тогда
            Предупреждение("Не удалось подключиться к PDF-принтеру!", 60);
        #КонецЕсли
        Возврат;
    КонецПопытки;
    ПДФ_принтер_имя = ПДФ_принтер.GetPrinterName();
    ИмяФайла = Константы.КаталогФайловПДФ.Получить() +"" + Заголовок + ".pdf";
 
    ПДФ_принтер.SetValue("output",    ИмяФайла);
    ПДФ_принтер.SetValue("ConfirmOverwrite", "yes");
    ПДФ_принтер.SetValue("ShowSaveAS",   "never");
    ПДФ_принтер.SetValue("ShowSettings",  "never");
    ПДФ_принтер.SetValue("ShowPDF",    "no");
    ПДФ_принтер.SetValue("Target",    "printer");
 
    ПДФ_принтер.SetValue("Subject",  "Report generated at " + ТекущаяДата());
    ПДФ_принтер.SetValue("UseThumbs", "yes");
    ПДФ_принтер.SetValue("Zoom",  "100");
 
    ПДФ_принтер.SetValue("WatermarkFontSize", "10");
    ПДФ_принтер.SetValue("WatermarkTransparency", "50");
    ПДФ_принтер.SetValue("WatermarkVerticalPosition", "bottom");
    ПДФ_принтер.SetValue("WatermarkHorizontalPosition", "right");
    ПДФ_принтер.SetValue("WatermarkVerticalAdjustment", "3");
    ПДФ_принтер.SetValue("WatermarkHorizontalAdjustment", "1");
    ПДФ_принтер.SetValue("WatermarkRotation", "90");
    ПДФ_принтер.SetValue("WatermarkColor", "#ff0000");
    ПДФ_принтер.SetValue("WatermarkOutlineWidth", "1");
    ПДФ_принтер.WriteSettings(True);
 
    ПечатныйДокумент.ИмяПринтера = ПДФ_принтер_имя;
    ПечатныйДокумент.АвтоМасштаб = Истина;
    ПечатныйДокумент.Напечатать();   



Как выяснилось во время печати в pdf есть проблема с передачей прозрачности картинки. Если вставлять прозрачную печать в счет поверх подписи, то в pdf-документе печать будет непрозрачной и затрет все собой. У меня был частный случай, когда печать находилась на одном и том же месте документа и за ней постоянно было одно и то же. Решением в данном случае стала генерация картинки печати с фоном, на котором она должна быть и вставка её в макет. 

Так же решением может быть печать не в pdf а xps документ. Там с прозрачностью все нормально. 
Автор: Андрей Данилюк 



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