0

我们的网站上有大量的 PDF 内容。我有一些从每个 PDF 的第 1 页生成的完全可用的 CFPDF 缩略图。我认为将缩略图 jpg 作为链接会很好,这样当您单击它时,您要么按原样看到第一页,要么生成另一个完整的预览。

我正在尝试使用 CFPDF 的合并操作,但到目前为止运气不佳。似乎没有办法只从 PDF 中提取单个页面 - 只删除它们。

有人有什么建议吗?我真的很感激!谢谢!

更新:尝试澄清,这是我现在使用的代码。对困惑感到抱歉!

<cfset dir = expandPath("\images\thumbs")>
<cfif not directoryExists(dir)>
    <cfdirectory action="create" directory="#dir#">
</cfif>
<cfset firstPage = expandPath("\images\thumbs\firstPage.pdf")>

<cfpdf action="thumbnail"
source="source"
destination="#dir#" 
format="jpg" 
scale="40"
overwrite="yes"
pages="1" 
resolution="low">
<cfpdf action="merge"
source="sameSource"
pages="1"
destination="#firstPage#"
overwrite="yes">
<a href="firstPage.pdf" target="_blank"> 
<img src="thumbnail.jpg" style="border: 1px solid silver;">
</a>

无论如何,我希望这能更好地解释我正在尝试做的事情。就像我说的,这可行,但 firstPage.pdf 始终只是一个文件——例如,如果几个人同时预览不同的 PDF 会发生什么?

谢谢!

4

2 回答 2

2

(如果我正确理解了这个问题......)

当然,您可以使用合并来提取单个页面:

<cfpdf action = "merge" 
    source="c:\dev\myFile.pdf"
    pages="10"
    name="singlePage" />

<cfcontent type="application/pdf" variable="#ToBinary(singlePage)#">    

例如,如果几个人同时预览不同的 PDF,会发生什么?

编辑:其中一些最终会预览错误的页面和/或缩略图;)为避免这种情况,您必须每次生成一个唯一的文件名,例如使用getTempFile()createUUID()和“.pdf”等.

尽管从技术上讲,您不必创建文件。您只能在内存中生成图像/pdf 并使用 cfcontent 提供它们(如上面的示例中所示)。

于 2012-02-21T20:56:14.290 回答
1

它很容易

<cfpdf source="pdfdata" pages="1" action="thumbnail" destination="." format="jpg" overwrite="true" resolution="high" scale="25">

这会将第一页变成jpg

于 2012-02-21T22:41:50.980 回答