Я получил это сработало, но самым запутанным способом.Я не хочу дублировать этот метод для других отчетов, если есть лучший способ.
Поскольку Google Image Charts устарели, что было бы намного проще, я решил использовать версию JavaScript дляGoogle Charts.Чтобы заставить это работать, я вставил cfinclude в основную программу отчетов, которая использовала jQuery / AJAX, чтобы вставить график в отчет.Нет проблем.Легко.Показывает отлично!
НО, получение отчета в формате PDF было другой историей.Вот что я сделал:
- Сначала я должен был решить, какой продукт PDF использовать.Я исследовал многие сторонние PDF-продукты, но в итоге получил CFHTMLTOPDF.Я попробовал CFDOCUMENT, но ему совсем не понравилась опция вывода PNG из Google Charts.
- Другая хитрость заключалась в том, что при использовании метода cfinclude для вставки диаграммы на страницу тег cfhtmltopdf отображался додиаграмма.Argh!Независимо от того, что я сделал, это не будет отображаться.Я протестировал его, вставив html-файл «рендеринг», и он работал, поэтому я знал, что это возможно.
- Итак, в качестве одного из этапов этого процесса я создаю html, содержащий данные отчета и диаграммы.jQuery выполняет большую часть тяжелой работы, просматривая данные и рисуя графики.HTML-код помещается в контейнер, и jQuery захватывает готовую HTML-строку и отправляет / публикует ее в другой программе.
- Эта следующая программа принимает HTML-файл и записывает файл .cfm с помощью тега cffile.Теперь, когда эта «отрендеренная» страница .cfm существует, программа вызывает финальную программу.Эта программа использует тег cfinclude, чтобы обернуть эту «визуализированную» страницу в тег cfhtmltopdf, и TaDa!Выходит прекрасный отчет!
Кажется смешным пройти через все это!Что я делаю неправильно?Есть ли тег ColdFusion, который остановил бы рендеринг тега cfhtmltopdf перед cfinclude?Разве JavaScript, будучи на стороне клиента, не встречается до тега cfhtmltopdf?