压缩由 coldfusion 生成的 PDF 文档
Compressing a PDF document generated by coldfusion
我正在尝试彻底检查 CF8 中内置的 pdf 报告生成应用程序,他们有一个界面可以生成 50 页的 pdf 法律报告并每天发送大约 100 次。但是,它非常麻烦并且会使已经超负荷工作的服务器陷入困境。是否有一个好的 PDF 压缩脚本,我可以 运行 与 coldfusion 或与 Adobe acrobat 集成的方式让它在服务器通过电子邮件发送 pdf 之前压缩 pdf?系统已使用可用的 Coldfusion 资源进行设置,以尝试帮助完成此过程,但仍然不够。
更新:我有机会进一步深入研究这个问题。这些文件的编译方式是通过 4 个 CF 表格,当法律数据进入系统时,有人手动输入这些表格。一些表单字段很长(接受超过 10,000 个字符或更多)。完成后,它 运行 是一个 cfdocument 标签,可将所有内容转换为 pdf。
CFDocument 生成臃肿的 PDF。我们测试了 GhostScript 并使用以下参数将 22.3mb 的 PDF 压缩为 4mb。 (如果设置为 "screen",文件大小会进一步缩小到 2.5mb。)
http://www.ghostscript.com/
要使用它,您必须在生成 PDF 后执行此优化作为额外步骤,并使用 cftry/catch 以防出现任何问题或超时。
<CFSET ThePDFFile = "C:\test\OriginalPDF.pdf">
<cfexecute name="c:\Program Files\gs\gs9.14\bin\gswin64.exe"
arguments="-sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -dNOPAUSE -dQUIET -dBATCH -sOutputFile=#replace(ThePDFFile,'.pdf','-opt.pdf')# #ThePDFFile#" timeOut="160">
</cfexecute>
另一种解决方案是使用 WKHTML2PDF 生成 PDF。结果文件要小得多。 ColdFusion 8-11 的质量是一致的。您可以嵌入 TrueType 字体而无需注册它们,并且它没有 CFDocument 中存在的任何 HTML/CSS 怪癖。
http://wkhtmltopdf.org/
这是一篇文章的 link 和一些示例 ColdFusion 代码,您可以使用这些代码将 WKHTMLTOPDF 的结果与 CFDocument 进行比较。
http://gamesover2600.tumblr.com/post/108490381084/wkhtmltopdf-demo-to-compare-w-adobe-coldfusion
我实际上能够使用 NeeviaPDF 压缩应用程序解决它,并使用以下代码将其绑定到 ColdFusion 中:
<cfset pdf_file_name = 'qryGetFileJustUploaded' />
<cfexecute name="C:\Program Files (x86)\neeviaPDF.com\PDFcompress\cmdLine\CLcompr.exe"
arguments="C:\inetpub\wwwroot\testingFolder\PDFCompression2\pdf\#pdf_file_name# C:\inetpub\wwwroot\testingFolder\PDFCompression2\pdf\#pdf_file_name# -co -ci jpg -cq 10 -gi jpg -gq 10 -mi jbig2 -mq 1"
outputfile="C:\inetpub\wwwroot\testingFolder\PDFCompression2\output.txt"
timeout="250">
</cfexecute>
您可以在其中将值传递给变量 #pdf_file_name#
,如果您想设置输出压缩 pdf 的名称,只需选择一个名称并将该名称放在 #pdf_file_name#
中引用的位置第二个 C:\ 行。
我正在尝试彻底检查 CF8 中内置的 pdf 报告生成应用程序,他们有一个界面可以生成 50 页的 pdf 法律报告并每天发送大约 100 次。但是,它非常麻烦并且会使已经超负荷工作的服务器陷入困境。是否有一个好的 PDF 压缩脚本,我可以 运行 与 coldfusion 或与 Adobe acrobat 集成的方式让它在服务器通过电子邮件发送 pdf 之前压缩 pdf?系统已使用可用的 Coldfusion 资源进行设置,以尝试帮助完成此过程,但仍然不够。
更新:我有机会进一步深入研究这个问题。这些文件的编译方式是通过 4 个 CF 表格,当法律数据进入系统时,有人手动输入这些表格。一些表单字段很长(接受超过 10,000 个字符或更多)。完成后,它 运行 是一个 cfdocument 标签,可将所有内容转换为 pdf。
CFDocument 生成臃肿的 PDF。我们测试了 GhostScript 并使用以下参数将 22.3mb 的 PDF 压缩为 4mb。 (如果设置为 "screen",文件大小会进一步缩小到 2.5mb。) http://www.ghostscript.com/
要使用它,您必须在生成 PDF 后执行此优化作为额外步骤,并使用 cftry/catch 以防出现任何问题或超时。
<CFSET ThePDFFile = "C:\test\OriginalPDF.pdf">
<cfexecute name="c:\Program Files\gs\gs9.14\bin\gswin64.exe"
arguments="-sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -dNOPAUSE -dQUIET -dBATCH -sOutputFile=#replace(ThePDFFile,'.pdf','-opt.pdf')# #ThePDFFile#" timeOut="160">
</cfexecute>
另一种解决方案是使用 WKHTML2PDF 生成 PDF。结果文件要小得多。 ColdFusion 8-11 的质量是一致的。您可以嵌入 TrueType 字体而无需注册它们,并且它没有 CFDocument 中存在的任何 HTML/CSS 怪癖。 http://wkhtmltopdf.org/
这是一篇文章的 link 和一些示例 ColdFusion 代码,您可以使用这些代码将 WKHTMLTOPDF 的结果与 CFDocument 进行比较。 http://gamesover2600.tumblr.com/post/108490381084/wkhtmltopdf-demo-to-compare-w-adobe-coldfusion
我实际上能够使用 NeeviaPDF 压缩应用程序解决它,并使用以下代码将其绑定到 ColdFusion 中:
<cfset pdf_file_name = 'qryGetFileJustUploaded' />
<cfexecute name="C:\Program Files (x86)\neeviaPDF.com\PDFcompress\cmdLine\CLcompr.exe"
arguments="C:\inetpub\wwwroot\testingFolder\PDFCompression2\pdf\#pdf_file_name# C:\inetpub\wwwroot\testingFolder\PDFCompression2\pdf\#pdf_file_name# -co -ci jpg -cq 10 -gi jpg -gq 10 -mi jbig2 -mq 1"
outputfile="C:\inetpub\wwwroot\testingFolder\PDFCompression2\output.txt"
timeout="250">
</cfexecute>
您可以在其中将值传递给变量 #pdf_file_name#
,如果您想设置输出压缩 pdf 的名称,只需选择一个名称并将该名称放在 #pdf_file_name#
中引用的位置第二个 C:\ 行。