【发布时间】:2013-08-20 16:54:49
【问题描述】:
这方面有很多话题,但没有一个能解决我的问题。我想做的很简单 - 生成一个条形图,然后将此图嵌入到一个 pdf 文件中,我将使用名为 TCPDF 的库生成该文件。
我在使用 TCPDF 生成 HTML 内容时没有任何问题,但是在生成图形并将其包含在 pdf 文件中时,我遇到了各种各样的问题。
生成图表
我正在使用名为 svggraph 的库创建图表。生成图非常简单,唯一的问题是通过包含主类文件来发送标头。发送标头时,TCPDF 无法生成 PDF 文档。
我现在的设置:
generatereport.php - TCPDF 在此页面上生成 pdf 文档 graph.php - SVGGraph 在此页面上生成条形图
我试过了:
-
file_get_contents('graph.php')来自generatereport.php- 当我使用 TCPDF 提供的内置writeHTML函数时,pdf 报告中没有输出任何内容 - require_once('graph.php') - 标头已发送错误
-
echo file_get_contents('graph.php')- 标头已发送,但这是意料之中的。好消息是图表显示正确。
目标(我希望发生的事情)
TCPDF 有一个内置的ImageSVG 函数用于此确切目的。第一个参数可以取一个 SVG 数据的 XML 字符串;这里的问题是我不知道如何从graph.php 页面返回 XML 数据(我已经阅读了我能找到的所有文档页面)。
有人有使用这两个库的经验吗?
谢谢!
编辑:一些代码
Graph.php:
<?php
require_once 'svggraph/SVGGraph.php';
$graph = new SVGGraph(500, 400);
$graph->Values(1, 4, 8, 9, 16, 25, 27);
$graph->Render('LineGraph', true, true)
?>
生成报告.php
$html = file_get_contents('http://localhost:8080/vu/graph.php');
if(!empty($file)){
//$pdf->Write(0, $html, '', 0, 'L', true, 0, false, false, 0);
//$pdf->writeHTML($html, true, false, true, false, '');
$pdf->ImageSVG('@' . $html, $x=15, $y=30, $w='', $h='', $link='http://www.tcpdf.org', $align='', $palign='', $border=1, $fitonpage=false);
}
@ 符号告诉函数正在向它发送 XML 数据,而不是 SVG 文件。
【问题讨论】:
-
我没有添加它作为答案,因为我没有尝试过。 goat1000.com/svggraph-using.php 第 4 节讨论了 Render() 调用的两个选项,以抑制某些返回值。更重要的是,有一个 $Fetch 函数可以生成图形而不将其发送到浏览器。这可能允许您保存 SVG 文件并在 ImageSVG 命令中读取。 tcpdf.org/doc/code/… 还建议 @ 选项需要实际的 SVG 数据字符串。