cfchart не печатается в PDF

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

Я попробовал cfhtmltopdf, время ожидания не истекло, но он не создает диаграмму и показывает «значок отсутствия изображения». ни диаграммы не генерируются, ни изображения. текст печатается нормально. При использовании изображения или диаграммы создание PDF-файла занимает от 20 до 30 секунд.

Я пробовал это на 32-битной и 6-битной CF11 с одинаковой проблемой. Даже самые простые коды не работают:

<cfhtmltopdf>
<!DOCTYPE html>
<html>
<body>
    <div class="pdf_logo" style="margin-bottom: 20px;">
        <a href="##"><img src="images/logo.png" width="180"></a>
    </div>
</body>
</html>
</cfhtmltopdf>

person Bsienn    schedule 02.06.2016    source источник
comment
Если вы забудете часть pdf и просто попытаетесь отобразить изображение в веб-браузере, проблема исчезнет или останется?   -  person Dan Bracuk    schedule 02.06.2016
comment
Извините за поздний ответ, @DanBracuk без cfdocument работает нормально.   -  person Bsienn    schedule 03.06.2016


Ответы (2)


Я столкнулся с аналогичной проблемой с cfhtmltopdf. В моем случае я использовал тег cfimage, и изображения отображались в документе PDF очень спорадически.

Я подозреваю, что рендеринг тега cfhtmltopdf происходит асинхронно, в отдельном потоке от любого рендеринга, который может происходить внутри этого тега (например, cfimage или cfchart). Таким образом, тег cfhtmltopdf завершит рендеринг, и у него не будет результатов рендеринга cfimage или cfchart, поэтому он отображает значок «сломанного изображения», потому что не может найти источник.

Таким образом, это решение, основанное на документации ColdFusion†, может вам помочь:

<!--- 1. Generate the chart as a jpeg image. --->
<cfchart name="myChart" format="jpg">             
    <cfchartseries type="pie"> 
        <cfchartdata item="New Vehicle Sales" value=500000> 
        <cfchartdata item="Used Vehicle Sales" value=250000> 
        <cfchartdata item="Leasing" value=300000> 
        <cfchartdata item="Service" value=400000> 
    </cfchartseries> 
</cfchart> 

<!--- 2. Write the jpeg image to a temporary directory. --->
<cffile  
    action="write"  
    file="#ExpandPath('/charts/vehicle.jpg')#"
    output="#myChart#" />

<!--- 3. Generate the PDF file. --->
<cfhtmltopdf>
<!DOCTYPE html>
<cfoutput>
<html>
    <body>
        <div class="chart">
            <!--- This image tag refers to the file created by cffile --->
            <img src="/charts/vehicle.jpg" />
        </div>
    </body>
</html>
</cfoutput>
</cfhtmltopdf>

† На основе приведенного здесь примера: http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-7934.html

person B. Bale    schedule 24.08.2016
comment
Спасибо за ответ, Прошло некоторое время, но я попробую ваше предложение. надеюсь, что это поможет мне для будущих вопросов. - person Bsienn; 25.08.2016

Ваша проблема, вероятно, связана с разрешением пути к изображению. попробуйте указать абсолютный путь (http://) или путь к файлу (file:\) ... попробуйте разрешить образ с рабочего стола самого сервера.

Помните, что сервер должен внутренне преобразовать ваш images/logo.png во что-то вроде . Если (например) ваш PDF-файл, генерирующий cfm, находится в папке, которая не является корневой, сервер может разрешить ее как http://blah.com/какая-то папка/images/logo.png — что, естественно, не будет работать, потому что там нет папки «images».

Другие возможности? Ваш сервер не может разрешить "внутренний" сетевой адрес или пытается использовать внешний нефизический адрес через интерфейс брандмауэра.

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

Подробнее о проблемах разрешения см. в моем сообщении на странице Разрешение сетевых адресов и Cfdocument.

Надеюсь это поможет! удачи.

person Mark A Kruger    schedule 02.06.2016
comment
Спасибо за ответ, даже если я удалю изображения, у меня есть cfchart, сгенерированный cfm, он по-прежнему создает ту же проблему с cfchart. Хотя информация полезная. Я новичок в КФ. - person Bsienn; 03.06.2016
comment
Я использовал localURl=true, и теперь изображения отображаются. Но диаграмма не отображается, вместо этого отображается значок красного креста. есть идеи по этому поводу? - person Bsienn; 04.06.2016