0
votes

I am trying to create a pdf using cfdocument but ColdFusion keeps throwing an exception and I can't find a way to work around this.

This is the code that I am using:

<cfdocument format="pdf" filename="rep_report.pdf" overwrite="yes" name="rep_report">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>Untitled Document</title>
  </head>

  <body>
      <style>
          <cfinclude template="stylesheets/bootstrap.min.css">
      </style>

      <cfinclude template="views/_reputationTable.cfm">  
  </body>
</html>
</cfdocument>

And this is the exception:

An exception occurred when performing document processing.
The cause of this exception was that: coldfusion.document.spi.DocumentExportException: java.lang.NullPointerException.

The error occurred in E:/sites/xAmplifier.com/admin/rep_report_template.cfm: line 43
Called from E:/sites/xAmplifier.com/admin/wheels/events/onrequest.cfm: line 1
Called from E:/sites/xAmplifier.com/admin/rep_report_template.cfm: line 43
Called from E:/sites/xAmplifier.com/admin/wheels/events/onrequest.cfm: line 1
41 :       </style>
42 :       
43 :       <cfinclude template="views/_reputationTable.cfm">  
44 :   </body>
45 : </html>

It seems that my issue is the part where I am trying to include a template but unfortunately I don't have a way around this.

Any suggestions on how I can keep the included template and use cfdocument?

3
Why are you including the style in the body? Why not just use the normal method? <link rel="stylesheet" type="text/css" media="screen" href="stylesheets/bootstrap.min.css" /> in the header? - fyroc
Originally this was an email template and as you may know the normal method will not work. I can change that but my issue is coming from the second include file not the first - Geo
What CF version are you using? - fyroc

3 Answers

1
votes
1
votes

I find sometimes when CFDOCUMENT breaks that the easiest path to finding the underlying problem is to use CFSAVECONTENT to generate the HTML, then pass the completed and expanded HTML to CFDOCUMENT to render it. That way, if you do hit an error in HTML generation, the error itself will be obvious.

This also minimises the time the document rendering is taking place, which is single-threaded unless you are using CF Enterprise.

0
votes

Make sure a font is specified for each text element.