PHP MYSQL FPDF检索存储为blob的pdf字符串

时间:2010-03-08 20:34:44

标签: php mysql fpdf

使用上述技术,我想创建一个PDF,将其存储在我的数据库中,并通过电子邮件发送。只需点击一个按钮即可完成。

我也想调用它并让它能够显示超链接。

我对FPDF很新。因此,我试图非常缓慢地开始。

我从这个链接开始stackoverflow Q

我将他的代码的两个部分放在同一页面中并尝试使用单独的页面。我做了建议的更改/添加,甚至进行了逐行比较。

我仍然收到消息,“格式错误:不是PDF或损坏的”

如果我只是$ pdf->输出();我得到pdf来显示。它既可以是字符串输出的方式,也可以是header()函数。除非我的列设置不正确,否则它不是存储方法。 BUt blob是一个blob,对吧?

如果您愿意,我可以上传已清理的代码。请告诉我有什么可以帮助解决这个问题。

由于

JJ

这是请求的代码 这是我输入的地方:

<?php
session_start();
include "server.php";//my file to connect to db
require('fpdf.php');

$pdf=new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');

$content = $pdf->Output("", "S"); //return the pdf file content as string

$sql = "update table set table_pdf= '".addslashes($content)."' " . 
    "where table_id = '188'";

mysql_query($sql);

//here's where I retrieve it

$sql2 = "select table_pdf from table where table_id = '188'"; 
$result2 = mysql_query($sql2); 
$rs = mysql_fetch_assoc($result2); 

$content2 = $rs['rdngs_hdr_pdf']; 
header('Content-Type: application/pdf'); 
header("Content-Length: ".strlen(content2)); 
header('Content-Disposition: attachment; filename=myfile.pdf'); 
print $content2; 
?>

就像我说的,我在上面的另一个问题链接上尝试了其他想法。现在它只是在那里有addslashes的版本。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

试一试。不要使用addslashes来转义内容,而是尝试使用unpack将其置于二进制表示中:

$content = $pdf->Output("", "S"); //return the pdf file content as string
$data = unpack("H*hex", $content);

$sql = "update table set table_pdf= " . 0x".$data['hex']." . " " . 
    "where table_id = '188'";

要检索数据,您应该只能进行选择,然后输出内容,就像您现在一样。