从当前文档生成pdf

时间:2012-02-15 15:40:29

标签: coldfusion pdf-generation

我需要一种从当前打开的coldfusion文档动态生成pdf的方法。但是我不知道如何处理这个因为我没有找到方法,即将当前(html)文本传递给使用cfdocument标记生成pdf的函数。

任何提示或想法,如何解决这个问题?

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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>

答案 2 :(得分: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文档输出。