2015-10-13 42 views
0

如何插入图片和文字到FPDF PDF生成的文件

<?php 
 
mysql_connect('localhost','root',''); 
 
mysql_select_db('pdf'); 
 
require('fpdf.php'); 
 

 
if(isset($_POST['submit'])){ 
 
\t $name = $_POST['name']; 
 
\t $email = $_POST['email']; 
 
\t $comment = $_POST['comment']; 
 
\t $url = $_POST['url']; 
 
$pdf=new FPDF(); 
 

 

 
$pdf->AddPage(); 
 
$pdf->Image('logo.png',18,13,33); 
 

 
$pdf->SetFont('Arial','B',14); 
 
$pdf->Cell(50,10, $name,1,1); 
 
$pdf->Cell(50,10, $email,1,7); 
 
$pdf->Cell(50,10, $url,1,1); 
 
$pdf->Cell(50,10, $comment,1,1); 
 

 

 
$pdf->SetFont('Arial','B',7); 
 

 
$pdf->SetFont('Arial','B',6); 
 
$pdf_name=$pdf->Output("","S"); 
 

 
if(isset($_POST['submit'])){ 
 
\t mysql_query("INSERT INTO pdf VALUES('','".mysql_real_escape_string($pdf_name)."')"); 
 
\t echo "insert successful!"; 
 
} 
 
} 
 
?>
这是我保存PDF到mysql数据库作为字符串我想请问我怎样才能将其保存为BLOB数据在PDF-部分>输出()。
<?php 
 
mysql_connect('localhost','root',''); 
 
mysql_select_db('pdf'); 
 

 
$query=mysql_query("SELECT * FROM pdf WHERE id='11'"); 
 
$row=mysql_fetch_assoc($query); 
 

 
$content = $row['pdf_file']; 
 
header('Content-Type: application/pdf'); 
 
header("Content-Length: ".strlen(content)); 
 
print $content; 
 

 
?>

这是我显示PDF文件保存为BLOB,但返回错误它不能显示该文件的一部分。

回答

0

问题是,同时将数据插入到你的数据库,

如果您插入BLOB数据(或二进制数据)转换成SQL话,最好不要使用逃生绳。因为它可以通过用户可以上传的PDF格式来执行sql注入,但是您的生成PDF文件是您自己的,因此执行sql禁令的风险非常高(可能为0)。

mysql_query("INSERT INTO pdf VALUES('','".mysql_real_escape_string($pdf_name)."')"); 

mysql_query("INSERT INTO pdf VALUES('','".$pdf_name."')"); 

如果要你用BASE64_ENCODE,让您的数据不会有任何形式的字符的问题,这是保持的Blob数据或传输的数据在很常见的方式网络。为了让它恢复使用base64_decode。

即,如果你想插入数据到数据库,使用base64_encode(),而从数据库选定的数据后,你必须使用base64_decode()