Имя: Пароль:
1C
1С v8
PDF и 1С
0 nserg
 
03.12.13
13:18
Доброго времени суток, уважаемые коллеги. перерыл весь интернет и так не нашёл как склеять несколько печатных форм в один PDF файл с  помощью PDFCreator. вот есть темка http://infostart.ru/public/75969/ всё супер, но создаётся несколько файлов мож кто в курсе какой параметр нужно указать у PDFCreator, чтоб складывал напечатаное в один файл?
1 spectre1978
 
03.12.13
14:26
(0) По-видимому, надо посмотреть документацию к COM-объектам криэйтора. Там же можно сначала собрать кучку отправляемых на него документов без собственно печати, а затем скомбинировать их все в один документ.
2 nserg
 
03.12.13
14:35
(1) та вот документацию тож что-то найти не удалось
3 viknik
 
03.12.13
14:49
Можно сначала все печатные формы вывести в один табличный документ, а уж затем его сохранить в pdf.
4 sikuda
 
03.12.13
14:54
(3) Соглашусь, но ТС не ищет лугких путей.
5 shachneff
 
03.12.13
16:04
еще есть pdftk
6 nserg
 
03.12.13
16:22
(4) дело не в усложнении, просто есть два момент 1. Масштабирование ПФ; 2. Ориентация страницы.  
В 1С это можно задать только для табличного документа, а не для области строк. отправлять на принтер кучу ПФ, тоже не вариант, т.к. на терминальных серверах установлен какой-то универсальный принтер EasyPrint и для его работу лучше отправлять одно задание а не 10 и более. В моем случае отправляется примерно 20-30 ПФ. по этой причине необходимо скомпоновать всё в один PDF и  отправить на принтер
7 viknik
 
03.12.13
16:43
Насчет EasyPrint - никаких проблем с печатью никогда не замечали. У нас тоже используется эта же технология, пакетом печатаются отгрузочные документы на автомобиль: число ПФ может доходить до сотни и никаких проблем. Если возникли у вас проблемы - пусть админы правильно настроят клиентские драйвера принтеров.
8 nserg
 
03.12.13
18:53
(7) админам проще сказать что проблема у вас и дать свои рекомендации, что собственно они и сделали. плюс у нас между принтерами и терминальными серверами сотни киллометров растояние
9 nserg
 
03.12.13
18:57
в общем ребята проблема решена

Попытка
      ПринтерПДФ = Новый COMОбъект(\"PDFCreator.clsPDFCreator\");
   Исключение
      Сообщить(\"Не установлен драйвер принтера PDFCreator!\", СтатусСообщения.Важное);
      Возврат Неопределено;
   КонецПопытки;
  
   ПринтерыPDF = ПринтерПДФ.cGetPDFCreatorPrinters();
   Если ПринтерыPDF.Count() = 0 Тогда
      ПринтерПДФ.cAddPDFCreatorPrinter(\"PDFCreator\");
      ПринтерыPDF = ПринтерПДФ.cGetPDFCreatorPrinters();
   КонецЕсли;
   ИмяПринтераPDF = ПринтерыPDF.Item<a rel="noindex,nofollow" href="/ajax/comment_pub.php?t=35747&c=1" target="_blank" title="Комментарий 1" class="comment-ref">(1)</a>
        
   ПринтерПДФ.cStart(\"/NoProcessingAtStartup\");
   ПринтерПДФ.cClearcache();
   ПринтерПДФ.cPrinterStop = 1;
  
   НаборОпций = ПринтерПДФ.cOptions();
   НаборОпций.NoConfirmMessageSwitchingDefaultprinter   = 1;
   НаборОпций.UseAutosave                        = 1;
   НаборОпций.UseAutosaveDirectory                  = 1;
   НаборОпций.AutosaveFormat                     = 0; // PDF  
   НаборОпций.AutosaveDirectory                  =  Путь;
   НаборОпций.AutosaveFilename                   = \"111.PDF\";
   НаборОпций.AutosaveStartStandardProgram       = 0;

   ПринтерПДФ.cOptions = НаборОпций;

   Для Индекс = 0 По ТабличныеДокументы.Количество() - 1 Цикл            
      ТабДок = ТабличныеДокументы[Индекс];
      ТабДок.ИмяПринтера = ИмяПринтераPDF;
      ТабДок.Напечатать();  
    КонецЦикла;;

   ПринтерПДФ.cCombineAll();
   ПринтерПДФ.cPrinterStop = 0;

   Счетчик = 0;
   Пока ПринтерПДФ.cCountOfPrintjobs > 1 Цикл
      Счетчик = Счетчик + 1;
      ПринтерПДФ.cCombineAll();
      Старт = ТекущаяДата();
      Пока ТекущаяДата() <> Старт + 1 Цикл
      КонецЦикла;          
   КонецЦикла;
            
   Старт = ТекущаяДата();
   Таймаут = 5;

   Пока НЕ ЗначениеЗаполнено(ПринтерПДФ.cOutputFileName) ИЛИ (ТекущаяДата() - Старт < Таймаут) Цикл
   КонецЦикла;
            
   ПринтерПДФ.cClearcache();
   ПринтерПДФ.cClose();
   ПринтерПДФ = Неопределено;
  
   Возврат Истина;
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн