2

我正在尝试在 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 中工作。

4

1 回答 1

0

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

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())。

于 2013-08-24T07:57:09.217 回答