2010-07-30 4 views
2

У меня есть программа, которая генерирует PDF в качестве вывода. Если я отправлю этот файл на принтер с помощью программы просмотра Adobe, он будет распечатан точно так, как вам захочется. В частности, приложение является печатью этикеток, и есть требование, чтобы каждый последний пиксель на странице использовался, т. Е. Никаких полей.Точная настройка преобразования ghostscript PDF в PS

Я хотел бы попытаться автоматизировать этот процесс. GhostScript казался логичным выбором. Я использовал командные строки

gs -dBATCH -dNOPAUSE -sDEVICE=psmono -sOutputFile=A4_300.xxx -sPAPERSIZE=a4 A4_Print.pdf 

... или в качестве альтернативы

gs -dBATCH -dNOPAUSE -sDEVICE=ljetplus -sOutputFile=A4_300.xxx -sPAPERSIZE=a4 A4_Print.pdf 

Я могу послать выходной файл, A4_300.xxx на принтер через LPR и он почти печатает хорошо, но есть около 6-8 мм отсутствуют со всех сторон, то есть есть край, который применяется, и текст, который должен печатать в этой области, фактически отключается.

Размер бумаги должен быть a4, и эта работа работает правильно. Но как я могу организовать вывод для заполнения всей страницы?

Устройство вывода - «какой-то лазерный принтер HP»; Я не видел физического устройства. Аналогичный принтер, с которым я тестировал, смог обработать вывод как для «psmono» (который создал PostScript), так и «ljetplus» (двоичный, но пригодный для печати).

Любые советы, пожалуйста?

+0

Вы говорите, что отправляете свои (PDF или PCL) печатные файлы * "на принтер через LPR" *. Могу ли я спросить: с какой ОС клиента печати? И это отличается от ваших успешных распечаток, используя * «Adobe Viewer» * ?? - Если да: считаете ли вы, что ваша клиентская ОС LPR может использовать другую настройку драйвера по сравнению с вашей операционной системой Adobe Viewer, которая определяет разные области печати и поля для формата A4? –

+0

Adobe работает на конфигурации KUbuntu, идентичной той, на которой я отправил свой файл в 'lpr'. Я мог бы попробовать сделать это на той же машине, но я не думаю, что в этом разница. –

+0

Если это разные машины, потенциал для различных конфигураций печати CUPS очень реален. Сначала проверьте следующие 3 пункта: (1) посмотрите на разницу в файлах '/ etc/cups/ppd/[yourprintername] .ppd' на каждом из компьютеров - (2) посмотрите на разницу в выходе этой оболочки command: 'lpoptions -d [yourprintername]' - (3) посмотреть на разницу в выходе этой команды оболочки: 'lpoptions -l -d [yourprintername]'. «1» подтверждает или запрещает «тот же драйвер» на двух системах. «2» и «3» (в случае одного и того же драйвера) подтверждают или запрещают «те же настройки по умолчанию». –

ответ

2

Прежде всего: вы уверены, что ваш принтер физически способен печатать от края до края? Какая модель принтера?

Возможно, сам принтер использует «Отсутствие 6-8 мм со всех сторон». Так как вы видите маржу «площадь, на самом деле обрезанная», это означает, что принтер действительно получает полное изображение, но он отображает изображение в виде *ImageableArea ключевых слов в PPD-файлах PostScript (файлы описания принтера PS).

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

  • ... некоторые полусекретные настройками в меню передней панели (если у вашего принтера есть s.th.), или ...
  • ... путем доступа к веб-панели настройки принтера из браузера вашего компьютера (если ваш принтер поддерживает это) или ..
  • ... путем входа в принтер через telnet, rsh, ssh или msh (в зависимости от ваш принтер, чтобы это разрешить).

Фактическая процедура установки этого зависит от модели вашего принтера. Он должен быть описан в руководстве по эксплуатации принтера.

Если вам не повезло, устройство просто не поддерживает печать без полей.Тогда купить или найти модель, которая делает то, что вы хотите ;-)


Update: я пропустил ваше заявление «Если я отправить этот файл на принтер с помощью программы просмотра Adobe, он печатает точно как хотел ». Из этого я заключаю, что ваш принтер действительно должен поддерживать печать без полей.

Если клиент LPR использует любую форму PPD (как в случае, если печать через CUPS, Fe), а затем проверить мои намеки об изменении PPD-(который также работает для систем Windows) здесь:

скорее всего, вам не нужно точно настроить свой вывод Ghostscript; это нормально, как показывают обрезанные распечатки.

Скорее всего, вам нужно настроить ваш клиент LPR, чтобы его «драйвер» не уничтожал то, что вы хотите отправить на принтер.

+0

Это звучит как хороший совет, спасибо вам большое! Однако ... программное обеспечение Java, производящее выход (и lpr), в конечном счете будет запущено на машине Linux, я не могу изменить конфигурацию. Если я не могу получить PPD, есть ли что-то, что я могу сделать с файлом, который будет в lpr? Любые опции, которые я могу передать lpr? –

+1

Если важно, чтобы ваше приложение печатало «до последнего пикселя» на определенном принтере, оно ** требует ** некоторого уровня контроля над этой очередью печати (используемый драйвер и настройки). В противном случае забудьте об этом. –

+1

Ubuntu использует CUPS для печати. Если ваш вывод PCL из Ghostscript выполняет 2 условия: (1) он вообще доступен для печати на целевом принтере; (2) он содержит изображение страницы PCL в точно требуемом размере - тогда вы можете отправить его с помощью опции «-o raw = true», минуя цепочку фильтрации CUPS и избегая инъекции PPD-опции CUPS в поток данных печати , ('lpr -p yourprintername -o raw = true/path/to/A4_300.xxx' - вы можете также использовать' lp -p ... ', btw ...) –

Смежные вопросы