gifts2017

Печать в PDF используя PDFCreator, Ghostscript, RedMon

Опубликовал Александр Куденцов (AklexK) в раздел Администрирование - Сервисные утилиты

Печать в PDF, используя PDFCreator, функция

// Печать в PDF используя PDFCreator

Используем не требующий лицензирования PDFCreator для формирования PDF (через виртуальный принтер), управление через wScript.shell параметрами в реестре
(выводим на PDFCreator, ждем формирования PDF, делаем с файлом что угодно)

Во вложении функция для подготовки файла, необходимо установить PDFCreator (на компе пользователя, через общий доступ не пробовали, хотя вроде шарится)

 http://www.pdfforge.org/files/images/PDFCreator2.png

Принтер для печати графики использующий Ghostscript

Можно обойтись без PDFCreator (который использует GhostScript)

Методика по ссылке http://club.shelek.ru/viewart.php?id=209

Инсталятор GS+Redmon+Script во вложении, может использоваться как сетевой, принтер создает файл в папке с именем пользователя, ну а дальше мы делаем с ним что необходимо. В этом случае wScript.shell не нужен

Можно формировать PNG, JPEG, BMP,...  Рассмотренное ПО не требует лицензирования. Удачи

Скачать файлы

Наименование Файл Версия Размер
- 328
.1230199312 2,58Kb
31.12.14
328
.1230199312 2,58Kb Скачать
Пример принтера Ghostscript и RedMon 69
.1238523253 11,84Mb
31.12.14
69
.1238523253 11,84Mb Скачать
PDFCreator.txt 8.1 (minimax) 82
.1238526285 3,00Kb
31.12.14
82
.1238526285 3,00Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Александр Куденцов (AklexK) 25.12.08 13:11
PDFCreator должен быть установлен на компе пользователя
2. Сhe Burashka (CheBurator) 25.12.08 13:17
Не очень... вроде же пдфкреатор поддерживает сетевую установку...
??
3. Александр Куденцов (AklexK) 25.12.08 13:19
через общий доступ не пробовали
4. Александр Куденцов (AklexK) 26.12.08 11:40
Для общего доступа к принтеру необходимо установить PDFCreator в режиме сервера и получать файлы из папки сервера \\serv\PDFs\<REDMON_MACHINE>\<REDMON_USER>\
5. Александр Куденцов (kudenzov) 26.12.08 12:18
хорошая альтернатива платному Adobe
6. Сhe Burashka (CheBurator) 27.12.08 01:29
<REDMON_MACHINE> - ???
\<REDMON_USER>\ - ???
7. Александр Куденцов (kudenzov) 30.12.08 11:40
<REDMON_MACHINE> - netbios Имя машины
<REDMON_USER> - имяпользователя
PDFCreator по умолчанию при серверной установке помещает файлы в данные папки, на диске сервера:
C:\PDFs\<REDMON_MACHINE>\<REDMON_USER>\

сделав данную папку Shared - можете забтрать файлы после печати
8. Z1C (ZLENKO) 16.01.09 10:15
Приятная особенность PDFCreator в том что можно файл сразу вкладывать как вложение в письмо типа mailto. Я так автоотсылку счетов клиентам делал одновременно с печатью счета на бумаге. Вот только закрыть доступ на редактирование PDF файла не удалось - похоже глюк.
9. Sergey Doronin (dsa046) 09.03.09 17:04
Z1C, а не осталось примерчика? Сейчас примено над такой же задачей бьюсь - печать оригиналов и одновременная рассылка по почте электронных вариантов.
10. Игорь Костюк (foxey) 13.03.09 13:37
А как из 8-ки напечатать в PDFCreator?
11. Александр Куденцов (AklexK) 14.03.09 09:42
1. вывод на принтер PDFCreator
2. Когда-то делал рассылку факсов и e-mail http://alkud.boom.ru/1c_faks.htm
(работет и сейчас) - можно переделать под PDFCreator

12. Sergey Doronin (dsa046) 15.03.09 21:02
AklexK , прикольная штука получилась, судя по описанию... Только для 8-ки бы исходник.

Люди делал кто-нить рассылку через PDF на e-mail из 8-ки? Поделитесь примерчиком плиз!!!
13. Василий Демидов (Душелов) 15.03.09 21:04
(12) А поиском воспользоваться религия не позволяет?

http://infostart.ru/blogs/605/
http://infostart.ru/projects/3138/
14. minimax (minimaxpo) 31.03.09 16:04
Спасибо за отличную реализацию конвартации печатных форм 1с в PDF.
Переписал для 8.1:
Функция глРежимФайлаОтчета()
Перем Режим;
Режим = "xls"; // по умолчанию
// если установден PDFCreator
Попытка
WshShell = Новый COMОбъект("wScript.shell");
PDFCreater = WshShell.RegRead("HKCU\Software\PDFCreator\Program\Language");
Если ЗначениеЗаполнено(PDFCreater) Тогда
Режим = "pdf";
Возврат Режим;
конецесли;
исключение
конецпопытки;

Возврат Режим;
КонецФункции
// подготовим выходной файл
//

Функция глПечатьВоВнешнийФайл(Таб, парИмяФайла="invoice") Экспорт
Перем ВыхФайл,ПутьПТП;

ВыхФайл = "";

РежимФайла = глРежимФайлаОтчета();
// Excel
Если РежимФайла = "xls" Тогда
ЕмФайл = КаталогВременныхФайлов() + парИмяФайла;
Попытка
Таб.Записать(ЕмФайл+".xls", "XLS");
ВыхФайл = ЕмФайл+".xls";
Исключение
КонецПопытки;


// PDFCreator
ИначеЕсли РежимФайла = "pdf" Тогда

ПутьПТП = КаталогВременныхФайлов();

//Печать на PDF
WshShell = Новый COMОбъект("wScript.shell");
WshShell.RegWrite ("HKCU\"+"Software\PDFCreator\Program\AutosaveFilename" ,парИмяФайла); // имя файла
WshShell.RegWrite ("HKCU\"+"Software\PDFCreator\Program\AutosaveDirectory",ПутьПТП); // путь автосохранеия
WshShell.RegWrite ("HKCU\"+"Software\PDFCreator\Program\UseAutosave","1"); // автосохранение
WshShell.RegWrite ("HKCU\"+"Software\PDFCreator\Program\UseAutosaveDirectory","1"); // сохранять в
WshShell.RegWrite ("HKCU\"+"Software\PDFCreator\Program\AutosaveFormat","0"); // формат - PDF
WshShell.RegWrite ("HKCU\"+"Software\PDFCreator\Program\AutosaveStartStandardPr­ogram","0"); // Не открываем файл
WshShell.RegWrite ("HKCU\"+"Software\PDFCreator\Printing\Formats\PDF\Colors\PDF­ColorsColorModel","2"); // цвет - серый
WshShell.RegWrite ("HKCU\"+"Software\PDFCreator\Printing\Formats\PDF\Security\P­DFUseSecurity","1"); // защита PDF
WshShell.RegWrite ("HKCU\"+"Software\PDFCreator\Printing\Formats\PDF\Security\P­DFDisallowCopy","1"); // защита PDF
WshShell.RegWrite ("HKCU\"+"Software\PDFCreator\Printing\Formats\PDF\Security\P­DFDisallowModifyContents","1"); // защита PDF


ЛогФайл = Новый Файл(ПутьПТП+парИмяФайла+".pdf");
Если ЛогФайл.Существует() Тогда
УдалитьФайлы(ПутьПТП+парИмяФайла+".pdf",);
КонецЕсли;
//ФС.УдалитьФайл(ЛогФайл);
Таб.ИмяПринтера = "PDFCreator";
УниверсальныеМеханизмы.НапечататьДокумент(Таб, 1, Истина);
//Таб.ПараметрыСтраницы(1,,,,,,,,,1,,"PDFCreator");
//Таб.Напечатать(0); // печатем
// ждем
повторов = 0;
Неудалось = 0;
ЛогФайл = Новый Файл(ПутьПТП+парИмяФайла+".pdf");
Пока НЕ ЛогФайл.Существует() цикл
Для i=1 По 10000 Цикл
ОбработкаПрерыванияПользователя();
КонецЦикла;
Состояние("подготовка графического файла");
повторов = повторов + 1;
Если повторов = 1000 тогда
Неудалось = 1;
Прервать;
КонецЕсли;
Конеццикла;
Если Неудалось = 0 тогда // есть файл
ВыхФайл = ПутьПТП+парИмяФайла+".pdf";
КонецЕсли;
КонецЕсли;

Возврат ВыхФайл;
КонецФункции
15. Александр Куденцов (AklexK) 31.03.09 22:05
Можно вообще обойтись без PDFCreator, используя только Ghostscript,RedMon и script для RedMon
Методика здесь
http://club.shelek.ru/viewart.php?id=209


16. Александр Куденцов (AklexK) 31.03.09 22:45
Если ОбработкаПрерыванияПользователя() вставлять, то флажок
Неудалось = 1 надо бы поставить
17. Боровиков Дмитрий (d_borovikov) 07.07.10 11:41
Работа PDFCreator для терминальных пользователей Windows server 2003 +1C 7.7 возможна. PDFCreator установлен только на Windows server 2003 (в обычном/клиентском режиме)
Необходимо сделать следующее:
1. Для каждого из терминальных пользователей разрешаем права на запись/чтение в реестре по ветке HKEY_CURRENT_USER\ () (используем редактор реестра REGEDIT
2. Заходим под каждым терминальным пользователем и с помощью редактора реестра REGEDIT дописываем ветку HKEY_CURRENT_USER\Software\PDFCreator\Program\
далее создаем New -> String Value = Language Value data=russian
3. Перегружаем Windows server 2003
.... пользуемся

.... можно сделать заплатку для реестра и при каждом запуске терминального пользователя - добавлять эту ветку реестра. (заниматься нет времени, но задача решена)
18. Anna Fomina (Fomania) 03.05.11 11:52
minimax пишет:
Переписал для 8.1

Спасибо, то что нужно как раз! Только в макет документа я вставила рисунки - печать и подписи. Почему-то при печати в PDF из программы они оказываются на черном фоне вместо прозрачного. Если сначала сохранить документ в Excel, а оттуда отправить в PDFCreator (вручную, не программно), то все нормально. Почти. Печать только немного приплюснута сверху. Подскажите, как это исправить можно?
nata_fad; +1 Ответить
19. Виктор Мазитов (VicGuru) 03.10.11 18:13
20. Amorfus (Amorfus) 04.10.11 10:29
Использовал для массовой рассылки pdf-ин по почте. Все работает отлично.
21. Александр Лыткин (TrinitronOTV) 04.10.11 11:34
ух ты, вот я наткнулся удачно, спасибо большое
22. Александр Куденцов (kudenzov) 04.10.11 21:21
Вот дополнение к конфигурации оформленное на базе данного решения
http://infostart.ru/public/19326/
или
http://genrep.net/1c_faks.htm
23. hanio (hanio) 07.10.11 12:12
А подскажите если задача стоит таким образом - есть файлы качественных сертификатов в PDF их надо печатать из документа реализация, это я все реализовал путем ЗапуститьПриложение() где происходит тихий запуск, печать и закрытие Adobe Reader , но тут момент что открываются они все и разом отследить момент закрытия Adobe я не знаю как. Итог - все сертификаты, а некоторые весят под 25 мегабайт толкаются в Adobe Reader, собственно съедают всю оперативку и понятное дело на принтер проталкиваются оооочень медленно. Подскажите решение какое мне тут подходит больше всего? Понятно что я сделал не через COM соединение, а будет ли выигрыш в нем? и будет ли выигрыш при использовании виртуального принтера?
25. ediks (ediks) 18.10.11 11:03
(23) Мне кажется, что в Вашем случае проще использовать ActiveX Acrobat reader. Кинуть на форму печати компоненту Акробата. Что типа

ИсходныйФайл = Новый Файл(ИмяФайла);
Если Не ИсходныйФайл.Существует() Тогда Возврат; КонецЕсли;
ЭлементыФормы.Акробат.LoadFile(ИмяФайла);
ЭлементыФормы.Акробат.Print();
26. Надежда (Izolda) 22.11.11 06:41
Спасибо обработка очень помогла
27. Надежда (Izolda) 22.01.12 21:59
Спасибо очень помогло используем PDFCreatorт.к. он бесплатный и поддерживает цифровую подпись
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа