Работа с PDF файлами из 1С через Ghostscript, Postscript (добавление текста в PDF, нижний колонтитул с гиперссылками, получение pdf в виде текста и т.д.)

21.06.21

Разработка - Работа с интерфейсом

В данной публикации раскрывается вопрос, как из 1С: -добавить текст в уже готовый PDF; -получить количество страниц у PDF файла; -получить весь текст из PDF; -добавить нижний колонтитул, с гиперссылками, в PDF; -сжать PDF; -добавить картинку и прочее в PDF; -разбить PDF файл на страницы. Используются инструменты Ghostscript и PostScript.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Работа с PDF файлами из 1С через Ghostscript, Postscript (добавление текста в PDF, нижний колонтитул с гиперссылками, получение pdf в виде текст и т.д.):
.epf 43,74Mb ver:1
97
97 Скачать (1 SM) Купить за 1 850 руб.

Добрый день, если перед Вами стоят задачи программной работы из 1С с PDF файлами, данная публикация будет полезна.

 

В загрузках доступна внешняя обработка для управляемых форм, платформа 8.3.

Обработка полностью самостоятельная (не требует БСП и т.д.), демонстрирует функционал:

  • Добавить текст в уже готовый PDF.
  • Получить количество страниц у PDF файла.
  • Получить весь текст из PDF.
  • Добавить нижний колонтитул, с гиперссылками, в PDF.
  • Сжать PDF.
  • Добавить картинку и прочее в PDF, на примере визуализации электронных подписей.
  • Разбить PDF файл на страницы. 

Используются готовые шаблоны кода, вы можете их переписать под себя, свои задачи.

Весь код обработки открыт, распространяется как есть.

Лицензия MIT.

 

Для работы с PDF обработка использует Ghostscript и PostScript.

Она самостоятельно установит Ghostscript в каталог временных файлов.

В коде вы можете увидеть, ознакомиться, с примерами скриптов PostScript.

Дополнительно раскрыт вопрос создания и использования русских шрифтов.

После первого запуска обработки пример будет находиться в КаталогВременныхФайлов()+"1С_Утилиты\Ghostscript\RU Script Examples\Generete RU Font"

 

Буду рад, если представленные шаблоны кода по работе с PDF в обработке сократят ваше время, помогут Вам решить задачи.

PDF Ghostscript PostScript

См. также

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Богатый редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    63097    44    59    

82

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    18965    26    6    

41

Работа с интерфейсом Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Редактор графов в 1С - внешний отчет, который формирует графы на основе таблицы значений, используя рисунки табличного документа. Есть возможность добавления, редактирования объектов графа и выгрузки результата в таблицу значений.

1500 руб.

06.10.2020    10324    7    7    

10

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    15088    YA_418728146    7    

169

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    3668    57    progmaster    8    

4

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    6054    kalyaka    6    

33
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user1296085 22.07.21 19:31 Сейчас в теме
Подскажите, возможно ли добавить с помощью этой обработки картинку в колонтитул?
2. RALIN123 42 22.07.21 20:32 Сейчас в теме
(1) В обработке нет такого функционала, в текущей реализации добавляется текст, делаются гиперссылки.
Но технически это возможно.
В этой обработке есть функционал который визуализацию электронной подписи делает.
Это делается через вставку картинки.
Используя этот код можно понять как вставлять картинки.
И вставить ее просто в нижний колонтитул.
Код обработки открыт.
3. Detache 12.08.21 23:16 Сейчас в теме
Добрый день! А как можно узнать разрешение у файла pdf, с помощью Ghostscript?
4. RALIN123 42 13.08.21 09:20 Сейчас в теме
(3) Не совсем понятно о каком разрешение Вы пишите. Если разрешение экрана, то это не про pdf.
5. Detache 13.08.21 10:03 Сейчас в теме
(4) в растровом PDF есть параметр разрешения в dpi. Adobe также может определять размеры картинок в dpi https://yadi.sk/i/qZg0jjiIiXF8qg

При сжатии гостскриптом задаем параметр -dPDFSETTINGS, который определяет качество разрешения сжатия картинок в dpi. Задача определить текущее разрешение картинок в dpi, чтобы принять решение о необходимости сжатия.

/screen (screen-view-only quality, 72 dpi images)
/ebook (low quality, 150 dpi images)
/printer (high quality, 300 dpi images)
/prepress (high quality, color preserving, 300 dpi imgs)
/default (almost identical to /screen)
6. Detache 13.08.21 12:47 Сейчас в теме
(5) Нашел нужные утилиты pdfinfo и pdfimages в составе xpdf tools
7. RALIN123 42 17.08.21 14:02 Сейчас в теме
(6)Использую связку Ghostscript, Postscript, готовых команд из коробки нет.
Как понял по сути Вам нужно:
-Извлечь графику из pdf, например встроенные картинки.
-Определить их DPI и если нужно потом сжать и упаковать обратно в pdf.

Это можно сделать написав скрипт на Postscript, но такая работа займет не 1 час.

То что вы приводите в примерах про Adobe, pdfinfo и т.д. это уже инструменты верхнего уровня, которые возможно и дают такой функционал, не смотрел.
8. jake_qwert 24 06.04.22 10:54 Сейчас в теме
Под линуксом можно заставить это работать? Пока не скачивал не смотрел что под капотом.
9. RALIN123 42 07.04.22 15:19 Сейчас в теме
(8)Текущая версия, из публикации, только Windows.
Сделать что бы на Linux работало, техническая возможность есть.
10. thang_madi 14.07.22 15:50 Сейчас в теме
Добрый день,

Команда "Визуализация ЭП" не дает результата.
В отладке получилось такое сообщение об ошибке:

==============================================
GPL Ghostscript 9.53.3: Unrecoverable error, exit code 1

Error: /rangecheck in --colorimage--
Operand stack:
0 0 2.481 378 8 --nostringval-- --nostringval-- false 3
Execution stack:
%interp_exit .runexec2 --nostringval-- colorimage --nostringval-- 2 %stopped_push --nostringval-- colorimage colorimage false 1 %stopped_push 1990 1 3 %oparray_pop 1989 1 3 %oparray_pop 1977 1 3 %oparray_pop 1978 1 3 %oparray_pop colorimage colorimage 2 1 1 colorimage %for_pos_int_continue 1981 1 7 %oparray_pop colorimage colorimage 1840 0 9 %oparray_pop colorimage 1820 1 9 %oparray_pop colorimage 4 colorimage 1863 9 9 %oparray_pop
Dictionary stack:
--dict:740/1123(ro)(G)-- --dict:1/20(G)-- --dict:80/200(L)-- --dict:80/200(L)-- --dict:133/256(ro)(G)-- --dict:318/325(ro)(G)-- --dict:33/64(L)-- --dict:6/9(L)-- --dict:6/20(L)--
Current allocation mode is local
=======================================

Подскажите, что как исправить?
11. RALIN123 42 14.07.22 22:10 Сейчас в теме
(10)
Error: /rangecheck in --colorimage--


Проблема связана с Вашим PDF файлом, как исправить не скажу.
Но вам нужно попробовать другой файл, обратить внимание на его размеры страницы и тд
Код обработки открыт.
12. SkrAn 1 25.07.22 18:08 Сейчас в теме
Добрый день - не могу что-то с синтаксисом разобраться. а как обратиться и воткнуть текущий номер страницы?
13. RALIN123 42 26.07.22 09:13 Сейчас в теме
(12) В интернете полно примеров на postscript:

https://stackoverflow.com/questions/1603301/how-to-add-page-numbers-to-postscript-pdf

gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -o "$output" -c "globaldict /MyPageCount 1 put /concatstrings { exch dup length 2 index length add string dup dup 4 2 roll copy length 4 -1 roll putinterval } bind def << /EndPage {exch pop 0 eq dup {/Helvetica 12 selectfont MyPageCount =string cvs ( / $npages) concatstrings dup stringwidth pop currentpagedevice /PageSize get 0 get exch sub 20 sub 20 moveto show globaldict /MyPageCount MyPageCount 1 add put } if } bind >> setpagedevice" -f input1.pdf
14. konyashkingn 2 04.10.22 16:59 Сейчас в теме
Стояла задача добавлять комментарий в прикрепляемый PDF файл. Данная обработка идеально справилась. Очень хорошо и понятно написан код, быстро разобрался и отредактировал под свои задачи. Огромное спасибо автору!
RALIN123; +1 Ответить
15. tsum 05.08.24 12:31 Сейчас в теме
Отличная разработка!
А как сделать верхний колонтитул?
RALIN123; +1 Ответить
16. RALIN123 42 09.08.24 11:59 Сейчас в теме
Насколько помню просто координаты соответствующие поменять(верх - низ).
Оставьте свое сообщение