PDF到PCL的转换

时间:2009-08-07 15:04:15

标签: java pdf printer-control-language rightfax

在我的Java应用程序中,我有PDF文件,我最终需要转换为PCL并发送到RightFax服务器。我还需要在PCL文件中嵌入代码,RightFax将读取这些文件以了解发送传真的位置。

这样做的最佳方法是什么?

在线搜索,似乎我可以使用Java的StreamPrintService将PDF文件打印到PCL。它是否正确?这是否也意味着我必须在我的操作系统上安装可以解释PCL的打印机?

生成PCL文件后,我需要在文件中添加嵌入代码。我是否将代码添加到文件的末尾(通过用Java打开并写出来)?

4 个答案:

答案 0 :(得分:5)

简化解决方案恕我直言,将PDF放入RightFax服务器上的文件夹中。然后使用嵌入代码或FCL(传真命令语言)创建一个小文本文件,其中包含将文档发送给谁的所有说明。我们一直这样做,效果很好。注意:传真命令语言仅在具有集成模块时可用。嵌入代码和FCL均具有附加文件的命令。一旦RightFax收到此文本文件,它将处理命令并附加PDF和传真和/或通过电子邮件发送文档。以下是两个示例(一个嵌入式和一个FCL)。

嵌入式代码文件:

<TOFAXNUM:999999999>
<TONAME:Douglas Anderson>
<BILLINFO1:12345>
<NOCOVER>
<WHO:DOUG>
<ADDDOC2: C:\pdfFiles\12345.pcl>

FCL代码文件:

{{begin}}
{{fax 999999999}}
{{contact Douglas Anderson}}
{{billinfo1 12346}}
{{nocover}}
{{attach C:\pdfFiles\12345.pcl delete}}
{{imagetype pdf}}
{{end}}

将此简单文本文件发送到RightFax将提示它处理并插入您指定的文档。 ATTACH有各种各样的ADDDOC命令和开关,告诉RightFax一旦发送文件就删除该文件等。

嵌入式代码文件可以通过HPFAX队列发送,FCL可以通过Production Inbox(c:\ program files \ rightfax \ production \ inbox)发送。

这提供了大量的控制并允许更容易的故障排除,因为您仍然可以查看PDF(由于您没有在开头粘贴文本),并且您可以轻松输出嵌入式代码或FCL文件到备用文件夹,以便查看甚至使用记事本等简单工具进行修改。


编辑:OpenSource是正确的,您可以将文件连接在一起,我已经很长时间没有使用嵌入式代码(参见最后的示例)但是已经使用FCL做了类似的事情(如果你有Ingetration模块,你可以这样做。)

FCL包含数据中嵌入的PDF或Postscript(RightFax处理PS和PDF):     {{开始}}     {{fax 999999999}}     {{联系道格拉斯安德森}}     {{billinfo1 12346}}     {{无掩饰}}     {{beginpostscript}}     %PDF-1.3 ...     ...你的pdf ......     {{endpostscript}}     {{端}}

PCL变体如下所示:

{{begin}}
{{fax 999999999}}
{{contact Douglas Anderson}}
{{billinfo1 12346}}
{{nocover}}
{{beginpcl}}
...your pcl data...
{{endpcl}}
{{end}}

包含嵌入代码的虚假首页(根据我们很久以前做过的笔记):

<TOFAXNUM:999999999>
<TONAME:Douglas Anderson>
<BILLINFO1:12345>
<NOCOVER>
<WHO:DOUG>
<DELETEFIRSTPAGE>
*PCL formfeed character*
...your pcl data...

您发送的内容将显示在“首页”上,但会被删除。另一种选择是在Formfeed之后将此数据发送到文档的末尾并使用<DELETELASTPAGE>选项。此数据也可以与PCL文件本身一起显示,因此您可以在作业开始时发送它而不使用<DELETEFIRSTPAGE>命令和换页器。

答案 1 :(得分:2)

我们有一个非常相似的过程。我们做的是我们有一个pcl文件和一个控制文件(一个带有rightfax指令的文本文件)。我们使用java NIO连接这两个文件,并将其发送到rightfax打印队列。我们基本上创建一个新文件,并使用stream.getChannel()获取的通道中的transferFrom()方法将上述两个文件写入新文件。如上所述,我们将控制指令放在顶部而不是底部?也许你错了它 - 我认为Rightfax需要它在顶部。我不得不承认我没有尝试在底部发送它。可能它会工作只是不知道。

答案 2 :(得分:0)

JPS允许您打印到文件,因此您只需要在PCL打印机上打印文件。

答案 3 :(得分:-1)

print-to-file似乎是正确的方法。