2012-02-15 111 views
1

我需要一種從當前打開的Coldfusion文檔動態生成pdf的方法。但我不知道如何處理這個問題,因爲我沒有找到一種方法,即將當前(html)文本傳遞給使用cfdocument標記生成pdf的函數。從當前文檔生成pdf

任何提示或想法,如何解決這個問題?

+0

你是否在使用任何特定的框架(Fusebox,車輪上的CF等等)? – 2012-02-15 17:14:10

回答

1

您可以使用cfdocument的「src」屬性通過內部自引用請求請求當前頁面,而不是捕獲當前響應正文。

內的Application.cfc:

<cffunction name="onRequestStart"> 

    <cfif IsDefined("url.showAsPDF") AND 
     url.showAsPDF IS "true" AND 
     cgi.http_user_agent IS NOT "ColdFusion"> 

    <cfset myURL = 
     "http" & 
     (IsDefined('CGI.HTTPS') AND CGI.HTTPS IS "On") ? "s" : "") & 
     "://#cgi.server_name#:#cgi.SERVER_PORT##cgi.script_name#?#cgi.query_string#"> 

    <cfdocument src="#myURL#" format="PDF"></cfdocument><cfabort> 

    </cfif> 
</cffunction> 

這將尋找名爲 「showAsPDF」 URL參數的存在。當它被定義並設置爲「true」時,則此代碼將在內部接管並運行相同的請求,並通過調用cfdocument進行路由。該響應將作爲PDF文檔輸出。

1

您可以通過使用cfpdf

生成基本的HTML PDF文檔,你甚至可以指定你的cfdocument作爲源cfpdf:

<cfpdf action="write" source="someCfDocument" destination="myBook1.pdf" overwrite="yes"> 

例無cfdocument:

<cfpdf action="write" destination="myBook1.pdf" overwrite="yes"> 
    <p>My dynamic html goes here</p> 
</cfpdf> 
3

我之前做過這樣的事情:

<cfsavecontent variable="pdf"> 
    <table> 
     ...lots of html and CF code ... 
    </table>  

</cfsavecontent> 

<cfdocument format="PDF" encryption="NONE"> 
    <cfdocumentsection> 
    <cfoutput>#pdf#</cfoutput> 
     <cfdocumentitem type="footer"> 
     <cfoutput> 
      #cfdocument.currentpagenumber# of #cfdocument.totalpagecount# 
     </cfoutput> 
     </cfdocumentitem> 
</cfdocumentsection> 
</cfdocument>