有没有一种简单的方法可以使用CF8将cfdocument或cfpdf创建的pdf缩放到单个页面?我的输出(日历)可能会扩展到第2页,具体取决于事件的数量.我宁愿缩放日历以使其适合一页.我假设我可以使用cfdocument创建pdf.使用cfpdf检查页码并循环,而totalPages> 1以较小的比例创建PDF.
psudo代码:
pdfScale = 100
cfdocument scale = "#pdfScale#"
cfpdf action = "getinfo" name = "mypdf"
cfloop while mypdf.totalPages > 1
pdfScale = pdfScale -5
cfdocument scale = "#pdfScale#"
cfpdf action = "getinfo" name = "mypdf"
/cfloop
Run Code Online (Sandbox Code Playgroud)
我是在正确的轨道还是我错过了一些让这更容易的东西?谢谢.
你的理论对我来说听起来很合理 - 你应该试一试并找出答案.由于这是一个相当无聊的答案,我还将您的伪代码转换为实际代码:
<cfset pdfScale = 100 />
<cfset pdfObj = "" />
<cfdocument format="pdf" name="pdfObj" scale="#pdfScale#">document contents</cfdocument>
<cfpdf action="getInfo" source="#pdfObj#" name="pdfInfo" />
<cfloop condition = "pdfInfo.TotalPages gt 1">
<cfset pdfScale -= 5 />
<cfdocument format="pdf" name="pdfObj" scale="#pdfScale#">document contents</cfdocument>
<cfpdf action="getInfo" source="#pdfObj#" name="pdfInfo" />
</cfloop>
Run Code Online (Sandbox Code Playgroud)
根据您的设置,您可能还希望将PDF的创建抽象为函数,这样您就不必在页面上重写两次所有内容.或者您可以使用包含.哎呀,如果有任何复杂的处理过程来渲染PDF的HTML(我假设有,因为你正在制作一个日历),那么你甚至可能想要预渲染内容并重复使用它,像这样:
<cfsavecontent variable="docContents">document contents go here</cfsavecontent>
<cfset pdfScale = 100 />
<cfset pdfObj = "" />
<cfdocument format="pdf" name="pdfObj" scale="#pdfScale#"><cfoutput>#docContents#</cfoutput></cfdocument>
<cfpdf action="getInfo" source="#pdfObj#" name="pdfInfo" />
<cfloop condition = "pdfInfo.TotalPages gt 1">
<cfset pdfScale -= 5 />
<cfdocument format="pdf" name="pdfObj" scale="#pdfScale#"><cfoutput>#docContents#</cfoutput></cfdocument>
<cfpdf action="getInfo" source="pdfObj" name="pdfInfo" />
</cfloop>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2716 次 |
| 最近记录: |