将pcl转义序列插入到由多个PDF文件构建的PCL中

时间:2009-08-07 18:53:14

标签: vb.net pdf edit printer-control-language

有哪些工具/方法可用于从PDF构建pcl流。

我们有一堆生成的PDF文件,这些文件被捆绑成一个大的pdf。 我需要生成一个打印作业来打印它,并能够在每页插入pcl转义序列(控制进纸和出纸槽堆叠)。截至目前,我们使用VB.Net打印类,使用第三方工具将PDF转换为光栅化图像进行打印。这不允许我们将PCL序列插入打印作业。

所以,基本上,我们需要处理一堆PDF,将它们附加到pcl并插入PCL命令。有没有办法实现这一目标。我们的应用程序是用VB.Net编写的。

非常感谢任何建议。

2 个答案:

答案 0 :(得分:0)

PCL和PDF是完全不同的语言,你不能将一个插入另一个。如果我有所有细节,我可能会推荐一些不同的东西;但是,基于你所描述的内容,我建议使用Ghostscript将PDF文档转换为PCL(使用包含的ljet4或其他PCL输出'设备'),然后你可以追加/添加任何PCL命令数据你需要控制托盘等。请记住,您可能无法简单地在顶部插入托盘选择,您需要移动到PCL流中的适当位置并执行此操作,例如,在E之后。

这方面的一个主要缺点是Ghostscript创建的PCL基本上是每页一个大的图形,所以它根本没有效果,并且不能让你在PCL中搜索文本等。

您未提供详细信息的内容可能有助于推荐更具特色的内容:

  • 最终目标是什么,在XYZ设备上打印PDF,转到特定托盘并输出?
  • 你需要将其“爆发”成多个文件吗?
  • 托盘选择是否会在整个文档中发生变化?
  • 文件是混合尺寸还是全尺寸纸张?
  • 该设备还支持哪些其他“语言”?如PS / PCL / PCL-XL / PDF / TIFF / HTML / JPG ......
  • 您是否想使用PCL,因为您必须或因为您对此感到满意?

您可以使用的其他选项包括:

  • 将PDF转换为PCL或Postscript,并在作业开始时插入适用于该打印机的PJL命令。
  • 在PDF文档的开头插入PJL(这假定打印机可以本机打印PDF)并将其发送到设备

编辑:根据与innocentDev的讨论添加更多细节

对于已更新的更新回复感到抱歉,看起来您已将其整理好了。

如果最终结果是获取PDF文件并转换为打印机能够在知识位置插入托盘选择命令时理解的内容,那么我认为有2个解决方案。您可以将此作为转换为PCL或Postscript。对于PCL使用FF(换页)控制代码来破坏每个页面并且在字体声明和/或图形图像期间整个页面中可能出现FF字符这一事实,Postscript可能更容易。

如果您通过单独拆分页面或者做一些额外的工作来确定FF实际上是一个分页符而不是该角色的其他实例之一,甚至是查找你可以打破的其他一些元素(Ghostscript可能在每个页面的开头有一些其他代码是一致的,我不是100%肯定)。另一种方法是使用Ghostscript或甚至pdftk将文档分成页面,将每个页面转换为PCL,插入命令并将页面连接在一起;但是,基于我之前关于从PDF转换为PCL的评论,您最终可能会得到一个非常大的输出文件。这不应该影响设备的打印性能,但可能会减慢数据传输等。

如果您使用PCL路线,一旦转换完毕,您只需在每页开头的文档中为每个页面添加适当的PCL命令进行托盘选择。

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

这有一些标准;然而,具有3个以上托盘的设备通常不遵循这些标准,并且当他们决定将多用途托盘从多功能进纸器重新映射到托盘1时,HP会重新编号,并且随着时间的推移它们会发生一些变化。检查设备文档或安装他们的PCL打印驱动程序和打印文件到您想要输出到的托盘,您可以看到他们使用的是什么号码。

如果你去Postscript你可以做同样的事情,但打破页面可能会更容易,因为你可以分割doucment(或至少寻找)命令,如:

%%Page: x x
%%BeginPageSetup

这些始终显示在Ghostscript的Postscript输出中。找到它们后,您可以在页面设置期间插入Postscript MediaSource命令并完成相同的操作。您甚至可以将Postscript命令用于媒体类型或媒体颜色。有一些通用命令,但您可能需要使用特定于您输出的设备的东西。您可以随时查看设备文档,PPD文件,或者我经常做的事情,打印以从驱动程序中提取文件,并查看它们如何实现编码。

答案 1 :(得分:0)

PCLTool SDK - 使用PCLXForm.exe和自定义.TPT脚本的选项V是唯一可以对从Windows打印机驱动程序生成的复杂PCL进行流式处理的产品。

演示位于www.pagetech.com。但是,由于需要专家级的PCL知识和SDK流编辑功能。 PageTech可能必须根据您的要求编写自定义脚本。如果PCL打印流发生变化,您可以编辑ASCII文本脚本。

BP