CFScript PDF与多个源合并

时间:2013-08-21 17:48:45

标签: coldfusion cfml cfpdf

我正在尝试在CFScript中进行PDF合并。

到目前为止,我有:

pdfService = new pdf();
pdfService.addParam(source='#source1#');
pdfService.addParam(source='#source2#');
writedump(pdfService);
pdfService.merge(destination="#getTempDirectory()#myfile.pdf";

但似乎addParam不起作用。 在addParams之后转储pdfService时,不会设置源。 使用addParams设置它的正确方法是什么? 如果只有一个源,则使用

可以正常工作
pdfService.addSource(source1);

但是在多个源的情况下,addParam不起作用,当它尝试进行合并时,会出现错误,说明源是空的。

请注意,源文件系统中不是路径,它是二进制PDF对象。 当我以通常的CF方式进行时,它工作正常:

<cfpdf action="merge" destination="#getTempDirectory()#myfile.pdf">
    <cfpdfparam source="source1" />
    <cfpdfparam source="source2" />
</cfpdf>

但我需要让它在CFScript中运行。

1 个答案:

答案 0 :(得分:0)

这可能与您在源中阅读的方式有关(您的代码没有显示)。尝试以下适用于CF9.01 的内容,并假设pdf文件与脚本位于同一目录中(编辑:从URL读取源PDF):

pdfService  =   New com.adobe.coldfusion.pdf();
//source1   =   pdfService.read( source="#ExpandPath( 'a.pdf' )#",name="source1" );
//source2   =   pdfService.read( source="#ExpandPath( 'b.pdf' )#",name="source2" );
source1 =   pdfService.read( source="http://www.mysite.com/viewpdf/a.pdf",name="source1" );
source2 =   pdfService.read( source="http://www.mysite.com/viewpdf/b.pdf",name="source2" );
pdfService.addParam( source="source1" );
pdfService.addParam( source="source2" );
pdfService.merge( destination="#ExpandPath( 'merged.pdf' )#" );

顺便提一下,我建议始终指定CF脚本“标签为cfcs”的完整点路径​​,以防你在其他地方有任何类似命名的组件(即New com.adobe.coldfusion.pdf()而不仅仅是New pdf() )。