Создать PDF из текущего документа - PullRequest
1 голос
/ 15 февраля 2012

Мне нужен способ динамического создания PDF-файла из открытого в настоящий момент документа Coldfusion.Но у меня нет идеи, как с этим справиться, потому что я не нашел способа, т. Е. Передать текущий (html) текст в функцию, которая генерирует PDF, используя тег cfdocument.

Любые подсказкиили идеи, как решить эту проблему?

Ответы [ 3 ]

3 голосов
/ 15 февраля 2012

Я делал что-то подобное раньше:

<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 голос
/ 15 февраля 2012

Вместо захвата текущего тела ответа вы можете использовать атрибут "src" в cfdocument для запроса текущей страницы через внутренний запрос самоссылки.

в 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>

Это будет искать наличие параметра URL с именем "showAsPDF".Когда он определен и установлен в значение «true», этот код вступит во владение и выполнит тот же самый запрос внутренне, направленный через вызов cfdocument.Ответ будет выведен в виде документа PDF.

1 голос
/ 15 февраля 2012

Вы можете сгенерировать pdf из базового html, используя cfpdf

Вы даже можете указать свой 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>
...