Объединение pdf в один файл

1. werik 13.08.15 10:38 Сейчас в теме
Всем доброе утро. У пользователей появилась хотелка получать в одном пдф файле пакет документов(СФ,Расходная накладная, ТТН,ТРН). Стоит ут 10.3 переписанная. Была идея запустить на платформе 8.3(там есть прекрасная возможность сохранять в один файл с помощью ПакетОтображаемыхДокументов), но не уверен что будет весь не типовой функционал нормально работать. Задача стоит именно в получении как отдельных файлов по каждому типу, так и общего файла. Копаю в сторону программного объединения с помощью PDFCreator(ручками объединять через программу естественно никто не хочет). Никто не сталкивался с такой задачей? Буду премного благодарен за любую помощь и идеи как это реализовать.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ditp 94 13.08.15 10:40 Сейчас в теме
(1) werik, полагаю, что объединить макеты документов и потом один раз сохранить в pdf будет проще, чем объединять несколько pdf-файлов.
4. werik 13.08.15 10:54 Сейчас в теме
(2) ditp, Проблема в том, что некоторые страницы идут альбомными, а другие книжными...даже если объединю, то некоторые доки будут очень мелко печататься, что в моем случае недопустимо...
3. AlexInqMetal 78 13.08.15 10:48 Сейчас в теме
(1) werik, есть прога pdf split and merge, если не ошибаюсь там с командной строки можно работать, может копнуть в эту сторону...
5. werik 13.08.15 10:55 Сейчас в теме
(3) AlexInqMetal, спасибо, буду смотреть. Осталось добраться до командной строки))
6. Boneman 302 13.08.15 11:04 Сейчас в теме
(1) werik,
но не уверен что будет весь не типовой функционал нормально работать

волков боятся - в лес не ходить.
Уже все давно на 8.3 перешли.
По крайней мере 8.3.5 уже обкатана.
Даже если где то и вылезут косяки, - подпилишь и дело с концом.
Зато интересно, и новый функционал поюзаешь, и опыт расширишь, чем возится с этими мрачными, устаревшими обходными путями, типа пдф креатора.
7. werik 13.08.15 11:12 Сейчас в теме
(6) Boneman, да я с 8.3 уже и так знаком...просто ут версии трехлетней давности...и переписана вдоль и поперек...лишнюю работу(пусть пока и теоретически) вешать себе на шею особо не хочется))) Оставлю это на крайний вариант)
11. starik-2005 3166 18.08.15 13:52 Сейчас в теме
(1) werik, а что, типовой механизм уже не рулит?

Код
         Пакет = Новый ПакетОтображаемыхДокументов;

         Пакет.КоличествоЭкземпляров = Макет.КоличествоЭкземпляров;
         Пакет.РазборПоКопиям = Истина;
         
         ЭлементПакета = Пакет.Состав.Добавить();
         ЭлементПакета.Данные = ПоместитьВоВременноеХранилище(Макет);

         Пакет.ЗаписатьФайлДляПечати(имяФайла+"pdf");
Показать полностью
BenDigget; Jambou; Axel089; +3 Ответить
12. AnryMc 849 18.08.15 14:05 Сейчас в теме
(11) starik-2005,
Вы (1) werik, читали?
Была идея запустить на платформе 8.3(там есть прекрасная возможность сохранять в один файл с помощью ПакетОтображаемыхДокументов)

а тема размещена в ветке: 1C:Предприятие 8 » Программирование 1С 8.2
13. starik-2005 3166 18.08.15 14:10 Сейчас в теме
(12) AnryMc, действительно, косяк ))
29. nightowl 28.05.16 16:22 Сейчас в теме
(11) starik-2005,
Сам пробовал удалось?
30. starik-2005 3166 28.05.16 16:46 Сейчас в теме
(29) nightowl, да, правда на 8.3. Все работает. На прошлой работе так был реализован механизм автопечати для автоматически созданных за прошедший день пакетов документов. Потом все записывалось в пять потоков на 5 линуксовых серверов, с которых уже печаталось на ХХ принтеров по всей Расеи-матушке.
31. nightowl 28.05.16 20:33 Сейчас в теме
(30) starik-2005,
Прошу прощенья. И что я не так делаю? У меня не получилось :(
Пакет = Новый ПакетОтображаемыхДокументов;
Каталог = "C:\TEMP\";
Файлы = НайтиФайлы(Каталог,"*.pdf",Истина);
Для каждого Файл Из Файлы Цикл Сообщить(Файл.ПолноеИмя);
    ЭлементПакета = Пакет.Состав.Добавить();
    ДвоичныеДанные = Новый ДвоичныеДанные(Файл.ПолноеИмя);
    ЭлементПакета.Данные = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
КонецЦикла;
ИмяФайла = Каталог+Формат(ТекущаяДата(),"ДФ=yyyyMMdd_HHmmss")+".pdf";
Пакет.ЗаписатьФайлДляПечати(ИмяФайла);
Показать
32. starik-2005 3166 28.05.16 21:53 Сейчас в теме
(31) nightowl, https://its.1c.ru/db/metod8dev#content:5792:hdoc - там все написано. Вообще не понимаю, почему не воспользоваться гуглом, когда что-то не получается? А... Это же не Windows-way...
Пакет позволяет также экспортировать табличные документы в один PDF файл. Для этого предназначен метод пакета ЗаписатьФайлДляПечати(), которому передается полное имя файла.
buddha667; dour-dead; +2 Ответить
40. ВладимирVolodya 07.09.16 15:57 Сейчас в теме
(32) starik-2005, Пробую Пакетом включить в пдф файл картинки JPG что то не получается. Он картинки формирует в один файл или только документы?
41. starik-2005 3166 07.09.16 16:54 Сейчас в теме
(40) ВладимирVolodya, я, лично, для картинок создавал табличный документ и вставлял туда нужные картинки. Можно между ними разрыв страницы вставлять. Потом уже табличный документ помещал в пакет, а пакет выгружал в PDF.
35. starik-2005 3166 29.05.16 18:15 Сейчас в теме
(31) nightowl, я, по всей видимости, не сразу понял, что Вы пытаетесь PDF-файлы склеить. Выше речь шла о том, чтобы склеивать сформированные табличные документы с разной ориентацией в один pdf-файл. Т.к. Вы хотите что-то другого, то, полагаю, склеить таким образом просто кучу уже сформированных pdf не получится.
BenDigget; +1 Ответить
36. cool.vlad4 2 29.05.16 22:10 Сейчас в теме
(35) starik-2005, когда я писал про свою ВК, имел в виду именно нативную. что такое нативная ВК , я в курсе как бы. можно мою вторую публикацию посмотреть.
37. cool.vlad4 2 29.05.16 22:14 Сейчас в теме
(35) starik-2005, на C# же написать обычный COM сервер по склейке pdf, вообще не проблема, это дело одного вечера, используя либо PDFSharp , либо ITextSharp.
39. nightowl 30.05.16 08:42 Сейчас в теме
(35)
Я тоже так понял, что-то тут... :)
Буду копать, в другую сторону, скорее внешние библиотеки.
48. BenDigget 29.12.22 21:29 Сейчас в теме
(11) Здравствуйте! 7 лет прошло, а тема все еще актуальна.
Я получил фалы с сайта PDF (путь к временному файлу), и мне надо их склеить, а после открыть. Получается, что у меня вместо макета - ВремФайл.
Помогите пожалуйста, если знаете:

ПараметрыПолучения = ПолучениеФайловИзИнтернетаКлиентСервер.ПараметрыПолученияФайла();
	ПараметрыПолучения.Таймаут = 120;
	Результат = ПолучениеФайловИзИнтернета.СкачатьФайлВоВременноеХранилище(СсылкаНаСертификат, ПараметрыПолучения);
		Если Результат.Статус Тогда
		
		Данные = ПолучитьИзВременногоХранилища(Результат.Путь);
		УдалитьИзВременногоХранилища(Результат.Путь);
		
		ВремФайл = ПолучитьИмяВременногоФайла("pdf");
		Данные.Записать(ВремФайл);
		Возврат ВремФайл;
Показать
8. AnryMc 849 13.08.15 11:34 Сейчас в теме
Не пробовал но можно ещё попробовать:
1) Создание файла принтера - Функция «Печать в файл» http://windows.microsoft.com/ru-ru/windows/print-to-file#1TC=windows-7
Дальше варианты:
2а) Формировать ПДФ из "пакета" файлов
2б) "Склеить" файлы - например copy 'file1' + 'file2' + 'file3' /b 'file.full' (Требует экспериментальной проверки) http://www.windowsfaq.ru/content/view/237/57/
3) "Печать" ПДФа

PDFBinder. Как объединить pdf файлы в один http://blog-pc.ru/pdfbinder-kak-obedinit-pdf.html
Объединяйте файлы в одном документе PDF https://acrobat.adobe.com/ru/ru/how-to/merge-combine-pdf-files-online.html

Объединение pdf в один используя pdftk.exe 1С:Предприятие 8.3 (8.3.4.365) http://www.forum.mista.ru/topic.php?id=694228

ЗЫ Формирование печатных форм в pdf http://infostart.ru/public/75969/
9. werik 13.08.15 12:33 Сейчас в теме
(8) AnryMc, Спасибо за идею.
10. werik 18.08.15 12:30 Сейчас в теме
(8) AnryMc, Остановился на варианте с pdftk. Тема полезная, но почему-то не передаются файлы в программу при срабатывании команды "Запустить приложение" хоть все так же и делаю.
14. werik 18.08.15 15:04 Сейчас в теме
Видимо мозгов не хватает. Не получается подружить 1с и pdftk)))
15. Xershi 1535 18.08.15 15:35 Сейчас в теме
(14) werik, так почему не хотите перейти на новую платформу? Поставили тестовый сервер запустили. Все работает!
16. werik 18.08.15 15:38 Сейчас в теме
(15) Xershi, Да потому что УТ 10.3 переписана вдоль и поперек. И скок там вылезет новых ошибок из-за перехода на платформу 8.3 я даже загадывать не хочу...тем более ее, в свое время, изменяли три программиста...
17. Xershi 1535 18.08.15 16:05 Сейчас в теме
(16) werik, в режиме совместимости ни одной!
denismal; +1 Ответить
18. starik-2005 3166 18.08.15 18:51 Сейчас в теме
(17) Xershi, не факт. У нас в режиме совместимости оказалось, что динамические списки ведут себя не совсем так, как привыкли пользователи. В итоге недели две зачищали вылезающие баги. Например, был баг с колонкой табличной части с наименованием "СтрокаПоиска" - в ней было пусто на форме, при попытке изменить платформа просто вылетала с ошибкой. Если на форме удалить старую ТЧ и перетащить ее снова из объекта - проблема исчезает.
19. werik 19.08.15 10:03 Сейчас в теме
а в 1С можно программно создать bat файл? что-то я не нашел нигде такого...
20. Xershi 1535 19.08.15 10:04 Сейчас в теме
(19) werik, это тот же текстовый файл, с расширением бат.
21. ditp 94 19.08.15 10:04 Сейчас в теме
(19) werik, можно создать текстовый файл и записать его как filename.bat
22. werik 19.08.15 10:20 Сейчас в теме
Да это понятно что можно создать текстовый файл, но при сохранении файла указывая "ТипФайлаТабличногоДокумента" расширения bat нет...
Или я чет путаю?))
23. Xershi 1535 19.08.15 10:24 Сейчас в теме
(22) werik, это структура файла. Расширение потом замените.
24. werik 19.08.15 11:10 Сейчас в теме
все. решил. Установил программку pdftk. Мож кому понадобится.
В обработке пакетной печати после создания всех файлов в формате пдф создаю такой бат файл:

Строка.ДобавитьСтроку("@echo on");
Строка.ДобавитьСтроку("cd "+ПутьКФайлу);
Строка.ДобавитьСтроку("pdftk *.pdf cat output 1111.pdf");
Строка.Записать(ПутьКФайлу+"\"+"dawn.bat","cp866");\\кодировку указываем чтобы он видел и папки названные на русском языке.
ЗапуститьПриложение(ПутьКФайлу+"\"+"dawn.bat");
сек = 5;                                           \\ пауза чтобы отработал батник и удаляем его. 
КонДата = ТекущаяДата() + сек;
  Пока ТекущаяДата() < КонДата Цикл
      // ждемссс....
  КонецЦикла;
   
УдалитьФайлы(ПутьКФайлу+"\"+"dawn.bat");
Показать
25. ditp 94 19.08.15 11:14 Сейчас в теме
(24) werik, что бы не крутить лишних циклов, погуглите команду "start" системы.
26. werik 19.08.15 11:15 Сейчас в теме
(25) ditp, Да это я знаю. Лень уже было. Хотелось поскорей потестить объединение и удаление лишнего. Все отлично работает. А красоту ща наведу:)
46. Spakus 27.02.20 13:51 Сейчас в теме
(24) Попробовал сделать аналогичное - не получилось :(.
Батник создается, но не отрабатывает.
Если запустить созданный батник ручками, то объединенный файл создается.

В чем может быть проблема?
27. Adguar 27.03.16 12:04 Сейчас в теме
Я использую специальный онлайн конвертер https://docs.zone/combine-to-pdf намного проще и удобней нежели скачивать отдельный софт.
28. PiotrLoginov 27.03.16 12:46 Сейчас в теме
(27) Ха. Вы каждый следующий файл для подклейки указываете ручками. А у ТС теперь полный автомат.
33. cool.vlad4 2 29.05.16 15:04 Сейчас в теме
правильно пишут, если есть возможность ,лучше изначально формировать из 1С нужный таб док и сохранять в pdf. если нет такой возможности, то можно и pdftk (публикацию уже кто-то сделал на эту тему). с другой стороны у меня есть моя глючная(не силен все таки я в плюсах( ) ВК , которая может это делать , которую пока не собираюсь выкладывать и еще я знаю есть com библиотека в интернете от сторонних разработчиков, которая отлично умеет это делать и многое другое. работает в том числе и на сервере. (минус только в инсталяции, регистрации, но достаточно сделать это на сервере) . если будет сильно интересно, как-нибудь опубликую публикацию по описанию библиотеки.
.
34. starik-2005 3166 29.05.16 18:12 Сейчас в теме
(33) cool.vlad4, лучше сделать нативную библиотеку - ее не надо инсталлировать.
38. пользователь 29.05.16 23:08
Сообщение было скрыто модератором.
...
42. ВладимирVolodya 08.09.16 07:35 Сейчас в теме
Спасибо за подсказку. Попробую.
43. Adguar 15.11.16 10:44 Сейчас в теме
Ну а почему бы не воспользоваться онлайн сервисами, например я юзаю онлайн программу https://docs.zone/combine-to-pdf и проще пареной репы)
44. v3rter 15.11.16 11:57 Сейчас в теме
45. andy_zhav 197 17.06.19 08:53 Сейчас в теме
Если еще актуально кому-нибудь: в 1С при выполнении команды "ЗапуститьПриложение" почему-то не подхватываются переменные окружения винды, поэтому нужно указывать полные пути для всех исполняемых файлов. если указать полный путь к файлу pdftk.exe, то не нужно будут изобретать ни какие bat-ники
Восьмой; 1_C; +2 Ответить
47. Spakus 27.02.20 13:53 Сейчас в теме
(45)

Можете на основе примера (24) показать как это должно выглядеть?
49. shved 31.10.24 11:19 Сейчас в теме
Почему то Пакет не пишется в Поток, хотя ТабДок.Записать(Поток,ТипФайлаТабличногоДокумента.PDF) на ура
Пичаль(
Мозолить диск неохота
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот