Распечатайте отдельные PDF-файлы одним пакетом postscript с помощью Ghostscript - PullRequest
0 голосов
/ 17 июня 2020

Извините, я новичок в Ghostscript и в целом языке PostScript.

У меня следующие потребности:

Мне нужно извлечь страницу из определенного c PDF document, обработайте эту страницу во внешнем API, который возвращает файл postscript (назовите его APIProcessedPS) с той же страницей. Как только это будет сделано, мне нужно отправить все на принтер, но сохраняя согласованность всего документа (т.е. не печатать одну часть, а другую, потому что документы могут быть неправильно собраны на принтере, если кто-то печатает между моими двумя запросами).

Вдобавок у меня есть еще несколько проблем:

  1. Файл PostScript APIProcessedPS должен храниться в формате PostScript и не конвертироваться в PDF, поэтому моя идея состоит в том, чтобы преобразовать исходный файл PDF в формат PostScript. и замените существующую страницу страницей APIProcessedPS.
  2. Последняя страница исходного PDF-файла должна быть отправлена ​​в другой лоток на принтере.
  3. Содержимое APIProcessedPS черного цвета должен быть преобразован в синий цвет.
  4. И, конечно, все, что должно быть отправлено одним пакетом (я полагаю) на принтер, чтобы сохранить целостный документ.

Что Я уже знаю, как:

  • Извлечь страницу для отправки в API из файла PDF с призраками cript
  • Преобразуйте существующий файл PDF в PS

С чем я борюсь:

  • Повторно соберите страницу APIPostscriptPS в документ PostScript
  • Замените черный цвет в постскриптуме APIPostscriptPS другим цветом (это вообще возможно?)
  • Отправьте все на принтер и укажите другой лоток для части последней страницы документа.

Я был бы очень благодарен, если бы кто-нибудь подскажет, с чего начать.

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

Спасибо

Пэт

1 Ответ

0 голосов
/ 17 июня 2020

PostScript - это язык программирования, поэтому вы должны понимать, что вы пытаетесь вмешаться в программу, не нарушая ее. Это нетривиально.

К счастью для вас, устройство ps2write в последних версиях Ghostscript производит то, что называется DS C (Соглашение о структуре документа) PostScript. Это означает, что каждая страница в выходном файле PostScript представляет собой отдельный объект. Если вы сохраняете исходный пролог вверху, вы можете переставлять страницы в оставшейся части программы.

Однако это не означает, что вы обязательно можете вставить другую программу PostScript в середину существующей программа, не вызывая проблем. Лучше всего сделать сохранение перед вставкой нового содержимого и восстановление после него. Не могу гарантировать это, потому что мне нужно было бы видеть программы в каждом случае.

Изменение цвета содержимого непонятно. Это текст, линия, изображения? Какая-то комбинация? В каком цветовом пространстве он определен? Вы снова говорите о попытке изменить программу, это нетривиально. Лучше, чтобы внешнее приложение получило это право извне. Опять же, не видя PostScript, его практически невозможно комментировать.

Использование разных лотков для страниц зависит от устройства, вам нужно выяснить, что вам нужно отправить на принтер, чтобы он использовал другой лоток. Как только вы узнаете, что можете либо вставить соответствующие команды самостоятельно, либо использовать переключатели PSDocOptions или PSPageOptions в Ghostscript, чтобы вставить необходимые команды на соответствующую страницу.

...