PHP包含经由FPDF以pdf PNG产生(php include generated png in

2019-09-21 06:50发布

我想产生与同样由PHP生成的图像的PDF。 听起来很简单,我相信我只是搞砸了头,但我似乎无法在这里找到一个解决方案。

首先我生成一个PDF:

define('FPDF_FONTPATH','fonts/');
require('scpt/fpdf.php');

class PDF extends FPDF {}
$pdf = new FPDF('P','in',array(8.5,11));
$pdf->SetAutoPageBreak(false,0);

$pdf->SetTextColor(0,0,0);
$pdf->SetDrawColor(0,0,0);
$pdf->SetFont('Helvetica','',12);

$pdf->Image('label.php?imgid=17',0,0,0,0,'PNG');

$pdf->Output('label.pdf','D');

然后我产生label.php的PNG:

if(isset($_GET["imgid"])) {
 header("Content-Type: image/png");
 $im = @imagecreate(110, 20)
     or die("Cannot Initialize new GD image stream");
 $background_color = imagecolorallocate($im, 0, 0, 0);
 $text_color = imagecolorallocate($im, 233, 14, 91);
 imagestring($im, 1, 5, 5,  "A Simple Text String", $text_color);
 imagepng($im);
 imagedestroy($im);
}

这将输出: FPDF error: Not a PNG file:....

呼叫label.php?imgid在浏览器= 17但是会告诉我的形象就好了...

我在想什么?

编辑

在文件:实施例

// Insert a logo in the top-left corner at 300 dpi
$pdf->Image('logo.png',10,10,-300);
// Insert a dynamic image from a URL
$pdf->Image('http://chart.googleapis.com/chart?cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World',60,30,90,0,'PNG');

所以应该可以包括动态生成的图像而不先保存它?

编辑#2

我把它与图书馆工作mem_image但问题仍然存在,这不应该IMO抛出一个错误? 所以我把这个问题留给打开,看看是否有确实有毛病我的这个脚本转向了是一个错误。

Answer 1:

查看了allow_url_fopen指令

http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen



Answer 2:

你几乎拥有它,你只是错过了几件事情。 首先,你需要在URL中的完整服务器地址为您的图片()调用,所以不是

$pdf->Image('label.php?imgid=17',0,0,0,0,'PNG');

你需要:

$pdf->Image('http://www.yourserver.com/label.php?imgid=17',0,0,0,0,'PNG');

这将消除你遇到FPDF错误。 然后让FPDF正确渲染你的输出,你需要添加对addPage()的调用,那么您的PDF生成脚本将成为:

require('scpt/fpdf.php');

$pdf = new FPDF('P','in',array(8.5,11));
$pdf->AddPage();
$pdf->Image('http://www.yourserver.com/label.php?imgid=17',0,0,0,0,'PNG');

$pdf->Output('label.pdf','D');

当然,你不需要SetTextColor()相同,setFont()等如果你只包括单个图像。 你并不需要自定义类的定义是(我删除不需要的行)。

不要忘了替换www.yourserver.com为适当的域和路径脚本。



Answer 3:

到图像函数的参数必须是一个文件,而不是一个URL或其他脚本。 既然你已经有你的标签的脚本,最简单的解决办法是将图像下载到一个临时位置,然后调用$ PDF - >图像()与临时文件。



Answer 4:

发生与您的文件名此问题,请确保您的通过文件名是有效的

function _parsepngstream($f, $file)
{
// Check signature
if($this->_readstream($f,8)!=chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10))
    $this->Error('Not a PNG file: '.$file);

...
}


Answer 5:

你需要做的唯一变化的是

require('fpdf.php');

并执行

$pdf->Image('http://www.yourserver.com/label.php?imgid=17',0,0,0,0,'PNG');

并运行代码...



Answer 6:

首先 ,尝试使用此代码来检查您的网址

$处理=的fopen( “ http://www.yourserver.com/label.php?imgid=17 ”, “RB”);

的print_r(FREAD($处理,8192));

你看到什么包含您的网址

**),请确保您的网址不重定向到登录页面



Answer 7:

更容易,只放巴纽在最后DINAMIC链及其所有的

例:

$pdf->Image('http://www.yourserver.com/label.php?   imgid=17.png',0,0,0,0,'PNG');

要么

$pdf->Image('../label.php?imgid=17.png',0,0,0,0,'PNG');

MIME类型没有在网址认可,为什么没有出现PNG,如果这是一个愚蠢的错误,但它被证明,谷歌通过与URL和PNG添加扩展不相同



文章来源: php include generated png in pdf via fpdf
标签: php fpdf