我将PDF文档作为LONGBLOB存储在数据库中。有没有解决方案将这些PDF嵌入到网页中?我找到了JavaScript的PDFObject,但它只适用于存储在文件夹中的PDF文件。或者,我可以将blob中的PDF转换为足够长的时间来读取它吗?
目前,我使用以下脚本打开PDF:
require_once 'init.php';
$sql = "SELECT data FROM dms_files WHERE id=42";
// the result of the query
$result = mysql_query("$sql") or die("Invalid query: " . mysql_error());
// set the header for the image
header( "Pragma: private");
header( "Cache-Control: max-age=0");
header("Content-type: application/pdf");
header('Content-Transfer-Encoding: binary');
header('Content-Description: File Transfer');
header('Content-Transfer-Encoding: binary');
echo $pdf;
它将PDF作为文件打开,但不会将其嵌入页面中。
上传PDF:
$docData = addslashes(file_get_contents($_FILES['document']['tmp_name']));
$docProperties = filesize($_FILES['document']['tmp_name']);
$sqldoc = "INSERT INTO dms_files(mime ,data) VALUES('{$docProperties}', '{$docData}')";
$current_id = mysql_query($sqldoc) or die("<b>Error:</b> Problem on Doc. Insert<br/>" . mysql_error());
$docId = mysql_insert_id();
我试着用这个:
<?php
require_once 'init.php';
$sql = "SELECT * FROM dms_files WHERE id = 42 ";
// the result of the query
$result = mysql_query("$sql") or die("Invalid query: " . mysql_error());
$row = mysql_fetch_row($result);
$basedir = 'LIB/';
$pdfname = strtolower(preg_replace('/([^\w\d\-_]+)/', '-', $row->nazov_rd));
$filename = $basedir . $pdfname . '_' . $row->id. '.pdf';
$file_content = base64_decode($row->data);
file_put_contents('filename.pdf', $row->data);
?>
但是,它显示以下错误:
注意:尝试在第11行的/Applications/XAMPP/xamppfiles/htdocs/D/PDFSHOW/pdfshow.php中获取非对象的属性
注意:尝试在第12行的/Applications/XAMPP/xamppfiles/htdocs/D/PDFSHOW/pdfshow.php中获取非对象的属性
注意:尝试在第13行的/Applications/XAMPP/xamppfiles/htdocs/D/PDFSHOW/pdfshow.php中获取非对象的属性
注意:尝试在第14行的/Applications/XAMPP/xamppfiles/htdocs/D/PDFSHOW/pdfshow.php中获取非对象的属性
有什么问题?当我打开filename.pdf时,预览显示“文件无法打开,因为它是空的”
我能够解决它;这个缺失了:
while($row = mysql_fetch_object($rs)){
答案 0 :(得分:0)
使用javascript pdfobject创建一个不同的页面,在其中嵌入此元素。
答案 1 :(得分:0)
这在Laravel 5.7中对我有用,它从数据库中获取了一个安排
foreach ($documento as $obj)
{
// $file = substr($obj->Nombre,0,strlen($obj->Nombre)-3).'pdf';
$filenombre = $Nombre.'.pdf';
$bytes = base64_decode($obj->file);
//header('Content-type: "'.$tipo.'"; charset=utf-8');
header("Content-type: application/pdf");
header('Content-Transfer-Encoding: binary');
header('Content-disposition: attachment; filename='.basename($filenombre));
//header('Content-Length: ' . filesize($filenombre));
print $bytes;
//header('Content-Length: ' . filesize($filenombre));
//readfile($filenombre);
exit(0);
}