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

21.06.21

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

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

Скачать исходный код

Наименование Файл Версия Размер
Работа с PDF файлами из 1С через Ghostscript, Postscript (добавление текста в PDF, нижний колонтитул с гиперссылками, получение pdf в виде текст и т.д.):
.epf 43,74Mb
78
.epf 1 43,74Mb 78 Скачать

Добрый день, если перед Вами стоят задачи программной работы из 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 Платные (руб)

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

6000 руб.

16.01.2015    61977    43    59    

81

[Расширения] Динамическое управление видимостью и доступностью элементов форм (УФ) (8.3.6+)

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

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    54607    16    21    

42

Управление дашбордами

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

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

2400 руб.

29.06.2020    16849    21    4    

35

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

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

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

2 стартмани

22.08.2023    2237    25    progmaster    8    

3

Модель состояния для MVC

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

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

1 стартмани

05.07.2022    3869    kalyaka    4    

29

Табло очереди заказов на экран телевизора

WEB-интеграция Работа с интерфейсом Платформа 1С v8.3 1С:Розница 2 Платные (руб)

Связка из веб-приложения и расширения для 1С: Розница 2.3.

3600 руб.

29.04.2022    12233    1    5    

10

Условное оформление элементов форм в пользовательском режиме 1С (управление видимостью и доступностью элементов форм)

Работа с интерфейсом Платформа 1С v8.3 Платные (руб)

Подсистема условного оформления элементов форм (далее подсистема) предназначена для настройки оформления элементов форм (видимость, доступность, цвет фона, цвет текста и прочее) в пользовательском режиме 1С. Также подсистему возможно использовать для ограничения доступа к реквизитам формы для определенных пользователей (или групп пользователей).

6000 руб.

18.01.2022    8901    1    2    

6

Несколько простых приемов для удобной работы в конфигураторе

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

Простая и удобная среда разработки 1С:Предприятия позволяет практически любому человеку начать работать под капотом 1С - в конфигураторе. Время идет, новички становятся программистами, специалистами, а об удобных приемах работы узнают годами, по ходу своего карьерного пути. А здорово было бы, если бы все знали удобные приемы в начале своего пути? Эти несколько приемов будут полезны новичкам, так как они затрагивают ту область работы, с которой приходится сталкиваться в начале карьеры.

12.11.2021    17604    acces969    95    

148
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user1296085 22.07.21 19:31 Сейчас в теме
Подскажите, возможно ли добавить с помощью этой обработки картинку в колонтитул?
+
2. RALIN123 37 22.07.21 20:32 Сейчас в теме
(1) В обработке нет такого функционала, в текущей реализации добавляется текст, делаются гиперссылки.
Но технически это возможно.
В этой обработке есть функционал который визуализацию электронной подписи делает.
Это делается через вставку картинки.
Используя этот код можно понять как вставлять картинки.
И вставить ее просто в нижний колонтитул.
Код обработки открыт.
+
3. Detache 12.08.21 23:16 Сейчас в теме
Добрый день! А как можно узнать разрешение у файла pdf, с помощью Ghostscript?
+
4. RALIN123 37 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 37 17.08.21 14:02 Сейчас в теме
(6)Использую связку Ghostscript, Postscript, готовых команд из коробки нет.
Как понял по сути Вам нужно:
-Извлечь графику из pdf, например встроенные картинки.
-Определить их DPI и если нужно потом сжать и упаковать обратно в pdf.

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

То что вы приводите в примерах про Adobe, pdfinfo и т.д. это уже инструменты верхнего уровня, которые возможно и дают такой функционал, не смотрел.
Detache; +1
8. jake_qwert 23 06.04.22 10:54 Сейчас в теме
Под линуксом можно заставить это работать? Пока не скачивал не смотрел что под капотом.
+
9. RALIN123 37 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 37 14.07.22 22:10 Сейчас в теме
(10)
Error: /rangecheck in --colorimage--


Проблема связана с Вашим PDF файлом, как исправить не скажу.
Но вам нужно попробовать другой файл, обратить внимание на его размеры страницы и тд
Код обработки открыт.
+
12. SkrAn 1 25.07.22 18:08 Сейчас в теме
Добрый день - не могу что-то с синтаксисом разобраться. а как обратиться и воткнуть текущий номер страницы?
+
13. RALIN123 37 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 файл. Данная обработка идеально справилась. Очень хорошо и понятно написан код, быстро разобрался и отредактировал под свои задачи. Огромное спасибо автору!
+
Оставьте свое сообщение