Добавить команду PJL в файл PDF с кодом PHP

Как я могу вставить команду PJL в PDF без необходимости конвертировать PDF в PostScript

*STARTPJL
@PJL SET STAPLE=LEFTTOP
*ENDPJL

после того, как я отправлю его на принтер через FTP или LPR.

Я использую Zend_Pdf для создания PDF документов.

** Я безуспешно пытался этот код

$a .= "<ESC>%-12345X@PJL<CR><LF>";
$a .= "@PJL SET OUTBIN=OUTBIN101<CR><LF>";
$a .= "@PJL SET STAPLE=LEFTTOP<CR><LF>";
$a .= "@PJL ENTER LANGUAGE = PDF<CR><LF>";
$a .= file_get_contents("/www/zendsvr/htdocs/GDA/public/pdf/test.pdf");
$a .= "<ESC>%-12345X";

$myfile = fopen("/www/zendsvr/htdocs/GDA/public/pdf/t.pdf", "w");
fwrite($myfile, $a);
fclose($myfile);

документ напечатан правильно, но не меняет документ и не зажимает, какие-либо предложения?

1 ответ

Решение

Я не собираюсь объяснять, как достичь следующих пунктов с помощью PHP. Эти пункты просто объясняют наиболее важные основы, которые необходимо знать при работе с PJL и PJL в отношении заданий на печать в формате PDF. Вы должны "перевести" эту общую информацию на PHP самостоятельно....


Вы не можете вставлять команды PJL в PDF. Но вы можете добавить команды PJL к заданию печати PDF.

Кроме того, не имеет смысла делать это после отправки его на принтер через FTP или через LPR. Это имеет смысл, только если вы делаете это перед отправкой файла.

Далее, ваш пример кода PJL не подходит для большинства целей. Стандартный способ добавления строк PJL к файлу задания на печать PDF заключается в следующем:

<ESC>%-12345X@PJL<CR><LF>
@PJL SET STAPLE=LEFTTOP<CR><LF>
@PJL    [... more PJL commands if required ...]
@PJL ENTER LANGUAGE = PDF<CR><LF>
[... all bytes of the PDF file, starting with '%PDF-1.' ...]
[... all bytes of the PDF file ............................]
[... all bytes of the PDF file ............................]
[... all bytes of the PDF file, ending with '%%EOF' .......]
<ESC>%-12345X

Пояснения:

  • Вот <ESC> обозначает escape- символ (27 в десятичном виде, 1B в шестнадцатеричном виде).
  • <CR> обозначает символ возврата каретки (13 в декабре, 0D в шестнадцатеричном виде). Это необязательно в PJL.
  • <LF> обозначает символ перевода строки (10 в декабре, 0A в шестнадцатеричном виде). Требуется в пределах PJL.
  • <ESC>%-12345X обозначает команду "Универсальный выходной язык" (UEL). Требуется в PJL. Он определяет начало и конец любого потока данных на основе PJL.

И наконец, обратите внимание:

  1. Не все принтеры и не все службы печати LPR могут работать с заданиями на печать в формате PDF.

  2. Кроме того, не все принтеры и не все службы печати LPR могут выполнять команды PJL, которые предшествуют файлам заданий на печать.

Другие вопросы по тегам