Вставьте escape-последовательности pcl в PCL, созданный из нескольких файлов PDF - PullRequest
1 голос
/ 07 августа 2009

Какие инструменты / методы доступны для создания потока pcl из PDF-файлов.

У нас есть несколько сгенерированных PDF-файлов, которые связаны в один большой PDF-файл. Мне нужно сгенерировать задание на печать, чтобы распечатать его с возможностью вставки escape-последовательностей pcl (для контроля подачи бумаги и укладки выходного лотка) на страницу. На данный момент мы используем классы печати VB.Net, конвертируем PDF в растровое изображение, используя сторонний инструмент для печати. Это не позволяет нам вставлять последовательности PCL в задание на печать.

Итак, в основном нам нужно обработать несколько PDF-файлов, добавить их в pcl и вставлять команды PCL по мере продвижения. Есть ли способ добиться этого. Наше приложение написано на VB.Net.

Любые предложения приветствуются.

Ответы [ 2 ]

0 голосов
/ 24 января 2010

PCLTool SDK - Вариант V, использующий PCLXForm.exe с пользовательским сценарием .TPT, является единственным продуктом, который может передавать сложные PCL, сгенерированные из драйвера принтера Windows.

Демонстрация на www.pagetech.com . Тем не менее, из-за необходимости знания уровня эксперта PCL и функций редактирования потока SDK. PageTech, вероятно, придется написать собственный скрипт в соответствии с вашими требованиями. Текстовый скрипт ASCII может быть отредактирован вами в случае изменения потока печати PCL.

BP

0 голосов
/ 10 августа 2009

PCL и PDF - это совершенно разные языки, вы не можете вставить один в другой. Если бы у меня были все детали, я бы порекомендовал что-то другое; однако, основываясь на том, что вы описали, я бы предложил преобразовать PDF-документы в PCL, используя Ghostscript (используя ljet4 или другое «устройство» вывода PCL, которое оно включает), а затем вы можете добавлять / добавлять любые команды PCL данные, необходимые для управления лотками и т. д. Имейте в виду, что вы, вероятно, не сможете просто вставить выбор лотков вверху, вам нужно будет перейти к подходящему месту в потоке PCL и сделать это, например, после E.

Единственным существенным недостатком этого является то, что PCL, который создает Ghostscript , представляет собой один большой рисунок на страницу, поэтому он вообще не эффективен и не дает вам возможности искать в PCL текст. и т.д.

Вещи, которые вы не предоставили, могут помочь порекомендовать что-то более конкретное:

  • Какова конечная цель: распечатать PDF-файл на устройстве XYZ, перейти в определенный лоток и вывести его?
  • Вам нужно «разбить» это на несколько документов?
  • Меняется ли выбор лотков по всему документу?
  • Является ли документ смешанного формата или все тот же формат бумаги?
  • Какие другие «языки» поддерживает устройство? Такие как PS / PCL / PCL-XL / PDF / TIFF / HTML / JPG ...
  • Хотите ли вы использовать PCL, потому что вам это нужно или потому, что вам удобно?

Другие опции, которые вы можете использовать:

  • Преобразование PDF в PCL или Postscript и вставка команд PJL подходят для этого принтера в начале работы.
  • Вставка PJL в начале документа PDF (предполагается, что принтер может печатать PDF самостоятельно) и отправка его на устройство

РЕДАКТИРОВАТЬ: Добавление дополнительной информации на основе обсуждения с innocentDev

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

Если конечный результат заключается в том, чтобы взять файл PDF и преобразовать его во что-то, что понимает принтер, вставляя команды выбора лотка в известные места, то я думаю, что есть 2 решения. Вы можете сделать это как преобразование в PCL или Postscript. Постскриптум может быть проще из-за того, что PCL использует управляющий код FF (formfeed) для разбиения каждой страницы, и символ FF может появляться на всей странице во время объявления шрифта и / или графического изображения.

Если вы управляете разбиением документа на FF, разделяя страницы по отдельности или выполняя некоторую дополнительную работу, чтобы определить, что FF - это на самом деле разрыв страницы, а не один из других экземпляров символа, или даже поиск какой-то другой элемент, который вы можете взломать ( Ghostscript может иметь какой-то другой код в начале каждой страницы, который является непротиворечивым, я не уверен на 100%). Другой способ - разбить документ на страницы, используя Ghostscript или даже pdftk , преобразовать каждую страницу в PCL, вставить команды и объединить страницы вместе; однако, основываясь на моих предыдущих комментариях относительно конвертации из PDF в PCL, вы можете получить очень большой выходной файл. Это не должно влиять на производительность печати устройства, но может замедлить передачу данных и т. Д.

Если вы идете по маршруту PCL, после его преобразования вам просто нужно добавить соответствующую команду PCL для выбора лотка для каждой страницы документа в начале каждой страницы.

<esc>&lxH where x is the tray number.  

Есть некоторые стандарты для этого; однако устройства с более чем 3 лотками часто не соответствуют этим стандартам, и они со временем немного меняются, поскольку HP перенумеровывает вещи, когда они решили переставить многоцелевой лоток из многоцелевого устройства подачи в лоток 1. Проверьте документацию по устройствам или установите их драйвер принтера PCL и печатайте в файл в лоток, в который вы хотите, чтобы он выводил, и вы можете видеть, какой номер они используют.

Если вы используете Postscript, вы можете сделать то же самое, но разбить страницы может быть проще, так как вы можете разделить команды doucment (или, по крайней мере, искать), например:

%%Page: x x
%%BeginPageSetup

Они всегда появляются в выводе Postscript из Ghostscript . Найдя их, вы можете вставить команду Postscript MediaSource во время настройки страницы и выполнить то же самое. Вы даже можете использовать команды Postscript для типа носителя или цвета носителя. Для этого есть несколько общих команд, но вам может потребоваться использовать что-то конкретное для устройства, на которое вы выводите. Вы всегда можете просмотреть документацию по устройству, файл PPD или, что я часто делаю, распечатать, чтобы сохранить что-то из их драйвера, и посмотреть, как они реализуют кодирование.

...