CFScript PDF Merge с несколькими источниками

Я пытаюсь выполнить слияние PDF в CFScript.

Пока у меня есть:

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

Но похоже, что addParam не работает. Когда pdfService сбрасывается после addParams, источник не устанавливается. Как правильно установить его с помощью addParams? Если есть только один источник, он отлично работает, используя

pdfService.addSource(source1);

Но в случае нескольких источников addParam не работает, и когда он пытается выполнить слияние, появляется ошибка, говорящая, что источник пуст.

Обратите внимание, что источник — это не путь в файловой системе, а двоичный объект PDF. Он отлично работает, когда я делаю это обычным способом CF:

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

Но мне нужно заставить его работать в CFScript.


person Guest    schedule 21.08.2013    source источник


Ответы (1)


Это может быть связано с тем, как вы читаете исходники (ваш код этого не показывает). Попробуйте следующее, которое работает на CF9.01 и предполагает, что файлы PDF находятся в том же каталоге, что и скрипт (EDIT: исходные 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()).

person CfSimplicity    schedule 24.08.2013
comment
Как я уже отмечал, источник не является фактическим путем в файловой системе. Это URL-адрес, который отображает PDF-файл в браузере. пример) www.mysite.com/viewpdf/1234 Он отлично работает и правильно объединяется с использованием способа cfml, но не способом cfscript с использованием того же источника. - person Guest; 26.08.2013
comment
Чтение исходного двоичного файла PDF по URL-адресам, а не по путям, также работает для меня. Смотрите обновленный ответ. - person CfSimplicity; 27.08.2013