PDF格式转换为PCL格式

4
在我的Java应用程序中,我有PDF文件,最终需要转换为PCL并发送到RightFax服务器。我还需要在PCL文件中嵌入代码,以便RightFax能够读取并知道将传真发送到哪里。
那么,如何才能最好地实现这一点呢?
在线搜索后,似乎可以使用Java的StreamPrintService将PDF文件打印成PCL。这是否正确?这是否意味着我必须在操作系统上安装一个能够解释PCL的打印机?
生成PCL文件后,我需要在文件中添加嵌入式代码。我是在文件末尾添加代码(通过在Java中打开并写出)吗?
4个回答

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将提示它处理并插入您指定的文档。有各种ADDDOC命令和ATTACH开关告诉RightFax在发送后删除文件等。
嵌入式代码文件可以通过HPFAX队列发送,而FCL可以通过生产收件箱(c:\program files\rightfax\production\inbox)发送。
这样可以获得很多控制,并且易于故障排除,因为您仍然拥有一个可查看的PDF(由于您没有在其开头添加文本),并且您可以轻松地将嵌入式代码或FCL文件输出到备用文件夹以进行查看,甚至使用像记事本这样的简单工具进行修改。
编辑:OpenSource是正确的,您可以将文件连接在一起,我很久以前就没有使用过嵌入式代码(请参见末尾的示例),但是已经使用类似的FCL(如果您有Ingetration模块,则可以执行此操作)。
带有数据中嵌入的PDF或Postscript的FCL(RightFax会处理PS和PDF)如下所示: {{begin}} {{fax 999999999}} {{contact Douglas Anderson}} {{billinfo1 12346}} {{nocover}} {{beginpostscript}} %PDF-1.3... ...您的pdf... {{endpostscript}} {{end}}
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>命令和分页符。

只是为了确保我理解正确:使用嵌入的代码文件,附加的PCL文件必须位于RightFax服务器可以访问的位置,对吗?如果这不可行,那么唯一的选择就是通过HPFAX队列发送带有嵌入代码的PCL文件。 - Khandelwal
它需要是可访问的,但不需要是PCL格式。它可以是PDF或任何RightFax支持的输入类型(TIF、JPG、Word等)。如果您无法将文件写入服务器,则可以通过RightFax具有访问权限的共享来访问它。正如“OpenSource”所示,您还可以在文件顶部发送此数据,我认为正确的术语是“虚假的第一页”。我们不会在嵌入式代码中这样做,但已经在Postscript、PCL和PDF中做了类似的事情。我会将其添加到我的“答案”中。 - Douglas Anderson
本意是说:我们不使用嵌入式代码进行此操作,但已经在后置脚本、打印机命令语言(PCL)和便携式文档格式(PDF)文档中完成了类似操作。 - Douglas Anderson
@CCondron - 如果您已安装集成模块,则只需将文件复制到“program files\rightfax\production\inbox”中。否则,您可以将其复制到hpfax共享“copy file.txt \server\hpfax”中。对于没有集成的系统,有一个文件夹,但我现在不记得是哪个了。 - Douglas Anderson

2
我们有一个非常相似的过程。我们拥有一个pcl文件和一个控制文件(一个包含rightfax指令的文本文件)。我们使用java NIO将这两个文件连接起来,并将其发送到rightfax打印队列中。我们基本上创建一个新文件,并使用通道中的transferFrom()方法将以上两个内容写入新文件中,该通道是通过stream.getChannel()获得的。我们将控制指令放在顶部而不是底部,就像您所提到的一样?也许您表述不清楚 - 我认为Rightfax需要它在顶部。我必须承认我没有尝试过将其发送到底部。也许它会起作用,只是不知道。

我并不是想表明命令要放在底部 - 我还没有尝试过这个。 - Khandelwal

0
JPS 可以让您打印到文件,因此您只需要在 PCL 打印机上打印到文件即可。

-1

将输出写入文件似乎是这里的正确方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接