CFDocument: coldfusion.document.spi.DocumentExportException: java.lang.NullPointerException

Я пытаюсь создать PDF-файл с помощью cfdocument, но ColdFusion продолжает выдавать исключение, и я не могу найти способ обойти это.

Это код, который я использую:

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

И это исключение:

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>

Кажется, моя проблема заключается в том, что я пытаюсь включить шаблон, но, к сожалению, у меня нет способа обойти это.

Любые предложения о том, как я могу сохранить включенный шаблон и использовать cfdocument?


person Geo    schedule 08.04.2014    source источник
comment
Почему вы включаете стиль в тело? Почему бы просто не использовать обычный метод? <link rel="stylesheet" type="text/css" media="screen" href="stylesheets/bootstrap.min.css" /> в шапке?   -  person fyroc    schedule 08.04.2014
comment
Первоначально это был шаблон электронной почты, и, как вы знаете, обычный метод не будет работать. Я могу это изменить, но моя проблема связана со вторым включаемым файлом, а не с первым.   -  person Geo    schedule 08.04.2014
comment
Какую версию CF вы используете?   -  person fyroc    schedule 08.04.2014


Ответы (3)


Это ошибка CF8 и CF9. Я не уверен, что эта ошибка была исправлена ​​в CF9.1.

http://blog.dkferguson.com/index.cfm/2008/1/11/CFDocument--pdf-generation-broke-after-CF8-upgrade

person fyroc    schedule 08.04.2014
comment
Спасибо за ответ. Основываясь на статье, мне придется добавить имя запроса перед каждой переменной внутри cfdocument, что будет раздражающим и утомительным... Буду держать вас в курсе. - person Geo; 08.04.2014
comment
Я попытался следовать решению автора в опубликованной вами статье, но моя проблема все еще остается. - person Geo; 09.04.2014

Иногда, когда CFDOCUMENT ломается, я обнаруживаю, что самый простой способ найти основную проблему — это использовать CFSAVECONTENT для создания HTML, а затем передать завершенный и расширенный HTML в CFDOCUMENT для его рендеринга. Таким образом, если вы столкнетесь с ошибкой при генерации HTML, сама ошибка будет очевидна.

Это также минимизирует время рендеринга документа, который является однопоточным, если только вы не используете CF Enterprise.

person Ian Finch    schedule 14.05.2014
comment
Я обнаружил, что новая версия моего HTML сломала pdf, обнаружил, что я не продвинул изображение для нового HTML. Продвижение изображения исправило HTML, и pdf снова работает. - person gordon; 21.08.2015

Убедитесь, что для каждого текстового элемента указан шрифт.

person Arun Mohandas    schedule 10.12.2020
comment
Можете ли вы добавить больше контекста, почему это может решить проблему? - person RayB; 11.12.2020
comment
Ошибка coldfusion.document.spi.DocumentExportException: java.lang.NullPointerException довольно общая. Это расплывчато указывает, что что-то пошло не так при преобразовании HTML в PDF. У меня была аналогичная проблема, когда я не мог отобразить даже Hello World в pdf. Затем я заменил ‹cfoutput›Hello World ‹/cfoutput› на ‹cfoutput› ‹div style=font-family: monospace›Hello World ‹/div› ‹/cfoutput›, после чего он начал правильно отображаться. Я подозреваю, что в коде этого вопроса также может быть проблема с импортом стилей. - person Arun Mohandas; 11.12.2020