使用 PHP 代码将 PJL 命令添加到 PDF 文件中

Add PJL command into PDF file with PHP code

如何在不将 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);

文档打印正确,但没有改画不画,有什么建议吗?

我不打算解释如何用PHP实现以下几点。这些要点仅解释了在处理 PJL 和 PJL 关于基于 PDF 的打印作业时要熟悉的最重要的基础知识。您必须 'translate' 将此通用信息 PHP 自己....


您不能插入 PJL 命令 PDF。但是您可以 prepend 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> 表示 回车 return 字符(13 为十进制,0D 为十六进制)。在 PJL 中 可选
  • <LF> 表示 换行 字符(10 为十进制,0A 为十六进制)。在 PJL 中需要
  • <ESC>%-12345X 表示 'Universal Exit Language' 命令 (UEL)。在 PJL 中需要。它定义任何基于 PJL 的数据流的开始和结束。

最后请注意:

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

  2. 此外,并非所有打印机和所有 LPR 打印服务都能够执行预先添加到打印作业文件的 PJL 命令。