Печать PDF из программы под Linux

Вопросы использования сторонних (не входящих в состав FPC и Lazarus) утилит и библиотек.

Модератор: Модераторы

Печать PDF из программы под Linux

Сообщение *Rik* » 09.02.2023 13:58:06

У меня есть приложение на Дизель-Паскале (тобишь Lazarus, использует LCL), которое работает с личными кабинетами Почты России, СДЭК, Боксберри, Пикпоинт. Вопрос в печати этикеток, после добавления посылки в личный кабинет прилетает этикетка PDF (адресный ярлык). Много лет я использую ActiveX контейнер с прилинкованным Adobe Reader. Все хорошо, но с ним я гвоздями прибит к Win32 (Adobe Reader только x32), про Linux вообще разговора нет. Шибко охота сделать кросс-платформенный вариант. Собственно этикетку, как на скриншоте можно не показывать, главное после получения отправлять её сразу на принтер.

Есть идеи?

Снимок экрана_2023-02-09_14-34-11.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Печать PDF из программы под Linux

Сообщение WAYFARER » 11.02.2023 15:20:38

Всё очень просто.
Можно использовать несколько вариантов.
1. lp (https://www.opennet.ru/docs/HOWTO-RU/Pr ... TO-37.html)
2. Открыть pdf в вьювере, установленном по-умолчанию (например с помощью xdg-open)
3. Использовать любой pdf вьювер.

Можно попробовать использовать вот этот компонент https://github.com/dinmil/PDFPreview, если правильно понял, это обертка для mupdf
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Печать PDF из программы под Linux

Сообщение delphius » 11.02.2023 19:04:47

*Rik* писал(а):Есть идеи?

Если нужен настоящий кроссплатформ и embeded решение, то возможно имеет смысл покопать в сторону интеграции браузера на форме
Например, https://github.com/PierceNg/fpwebview
Но не уверен конкретно в решении выше в плане встроенного просмотра и печати pdf под linux и macos, под windows в webview2 это точно есть.

Если есть желание сохранить наглядность и при этом получить кроссплатформенность, то может уйти вообще от сложности с прикручиванием через посредников к форме pdf, а сконвертить сначала pdf в растр, например jpg, внешней командной утилитой и просто приклеить на форму и печатать картинку?
https://www.xpdfreader.com/pdftoppm-man.html - linux
https://askubuntu.com/questions/150100/extracting-embedded-images-from-a-pdf/1187844#1187844
https://imagemagick.org/index.php - кроссплатформенная
https://wiki.freepascal.org/Printing
https://wiki.freepascal.org/Print_Bitmap/ru
delphius
постоялец
 
Сообщения: 129
Зарегистрирован: 18.03.2020 13:40:11

Re: Печать PDF из программы под Linux

Сообщение Alexander » 14.02.2023 08:02:58

Ещё:
lpr

Может быть также какие-то возможности командой строки Inkscape, MSEIde report и предобработка вроде http://ekhlakov.blogspot.com/2013/10/pdf-linux.html , https://www.linux.org.ru/forum/desktop/13794638

Добавлено спустя 22 минуты 52 секунды:
И была попытка создания https://www.opennet.ru/opennews/art.shtml?num=33911
https://github.com/hughsie/printerd
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 771
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Re: Печать PDF из программы под Linux

Сообщение *Rik* » 19.02.2023 10:17:22

Коллеги спасибо, буду пробовать.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Печать PDF из программы под Linux

Сообщение wavebvg » 24.02.2023 12:12:53

Я бы воспользовался ImageMagick-ом. В fcl он уже есть.
wavebvg
постоялец
 
Сообщения: 354
Зарегистрирован: 28.02.2008 04:57:35

Re: Печать PDF из программы под Linux

Сообщение delphius » 28.02.2023 23:00:25

delphius писал(а):
*Rik* писал(а):Есть идеи?

Если нужен настоящий кроссплатформ и embeded решение, то возможно имеет смысл покопать в сторону интеграции браузера на форме
Например, https://github.com/PierceNg/fpwebview
Но не уверен конкретно в решении выше в плане встроенного просмотра и печати pdf под linux и macos, под windows в webview2 это точно есть.


В развитие идеи, можно использовать
https://github.com/mozilla/pdf.js
Вот онлайн пример...
https://mozilla.github.io/pdf.js/web/viewer.html
delphius
постоялец
 
Сообщения: 129
Зарегистрирован: 18.03.2020 13:40:11

Re: Печать PDF из программы под Linux

Сообщение *Rik* » 31.03.2023 14:23:25

Коллеги, добрый день.

Самый быстрый вариант оказался с ImageMagick, начал с него, только в систему я ни чего монтировать не стал, а просто использую командную строку для конвертации PDF в PNG.

Process1.CommandLine = 'C:\ImageMagick\convert.exe -density 200 -background white -alpha remove -alpha off ' + PdfFile + ' ' + PngFile;

Здесь задается 200dpi, белый фон и удаляется альфа канал, без удаления прозрачности не печатает совсем (хотя на экране в окне просмотра отображается нормально).
Затем изображение загружается в бланк LazReport и печатается на принтере этикеток TOSHIBA, к сожалению у него драйверов под Linux нет, поэтому всё равно под Win пробуем.
Результат заметно хуже оригинала PDF, т.к. видимо растровая картинка стретчится до нужного размера, пытаясь вписаться в нужный прямоугольник. У принтера 203 dpi, поэкспериментировал с ключем -density, оптимальным вариантом оказалось 200dpi, но все равно стрёмненько, хотя все штрихкоды и datamatrix читаются.
Может идеи какие-то будут по улучшению изображенгия?
Пользовался ли кто GHostScript для отправки pdf на принтер с помощью командной строки?
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Печать PDF из программы под Linux

Сообщение Alexander » 03.04.2023 18:59:20

> на принтере этикеток TOSHIBA, к сожалению у него драйверов под Linux нет,

А это не подходит ?

https://usca.tscprinters.com/en/downloads
https://www.posland.ru/promyshlennye/b- ... -dpi__drv/
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 771
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Re: Печать PDF из программы под Linux

Сообщение v-t-l » 06.04.2023 20:42:50

*Rik* писал(а):Пользовался ли кто GHostScript для отправки pdf на принтер с помощью командной строки?

В Linux
Код: Выделить всё
lpr -P 'My Fav Printer' my_file.pdf

В Windows https://ghostscript.com/docs/9.54.0/Devices.htm#Win
v-t-l
энтузиаст
 
Сообщения: 733
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Печать PDF из программы под Linux

Сообщение wavebvg » 10.04.2023 16:05:10

*Rik* писал(а):Самый быстрый вариант оказался с ImageMagick, начал с него, только в систему я ни чего монтировать не стал, а просто использую командную строку для конвертации PDF в PNG.

ImageWand API => открыли PDF => прочитали постранично => отправили на печать.
wavebvg
постоялец
 
Сообщения: 354
Зарегистрирован: 28.02.2008 04:57:35

Re: Печать PDF из программы под Linux

Сообщение svk12 » 12.04.2023 16:20:17

Не проще ли использовать стандартную
Код: Выделить всё
function OpenDocument(APath: String): Boolean;
lclintf.pas(83,10)
Description
Opens the specified document using the default application for the platform or widgetset.

?
svk12
постоялец
 
Сообщения: 408
Зарегистрирован: 09.06.2008 18:42:47

Re: Печать PDF из программы под Linux

Сообщение *Rik* » 13.04.2023 15:48:20

Подкрутили пока драйвер принтера, поставили сглаживание, сейчас вполне приемлемо. Самое главное, когда печатали через OLE, были сбои. Сейчас несколько дней отработали через ImageMagic, ни одного сбоя.
Сам ImageMagic использует GHostScript, и похоже PDF конвертирует через него. Я сделал конвертацию без ImageMagic, но пока не запустил этот вариант в работу и самое главное GHostScript так-же может отправить PDF на печать, на днях пробовали, качество вроде лучше (а может и нет), но там есть нюансы надо разбираться, пока времени на это нет, попробую летом, когда работы будет меньше будут свободные принтера, один возьму для экспериментов и попробую наладить печать почтовых ярлыков через GHostScript без ImageMagic. Пока разбирался с GHostScript, появилась догадка почему были сбои при печати через OLE, похоже иногда ярлык за границу бумаги улазит, после этого принтер встает колом.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал


Вернуться в Сторонние средства

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru