6

如何在无需将 PDF 转换为 PostScript 的情况下将 PJL 命令插入 PDF

*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);

文件打印正确但不改变抽屉而不是夹子,有什么建议吗?

4

1 回答 1

9

我不打算解释如何用 PHP 实现以下几点。这些要点仅解释了在处理 PJL 和处理基于 PDF 的打印作业的 PJL 时要熟悉的最重要的基础知识。您必须自己将这些通用信息“翻译”为 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>表示转义字符(27十进制,1B十六进制)。
  • <CR>表示回车符(13十进制,0D十六进制)。它在 PJL 中是可选的。
  • <LF>表示换行符10十进制,0A十六进制)。在 PJL 中是必需的。
  • <ESC>%-12345X表示“通用退出语言” 命令 (UEL)。在 PJL 中是必需的。它定义了任何基于 PJL 的数据流的开始和结束。

最后,请注意:

  1. 并非所有打印机和所有 LPR 打印服务都能够处理基于 PDF 的打印作业。

  2. 此外,并非所有打印机和所有 LPR 打印服务都能够支持打印作业文件之前的 PJL 命令。

于 2015-01-22T17:09:34.220 回答