我正在尝试使用TCPDF和FPDI的组合生成pdf。这是我的代码。
require_once('../tcpdf/tcpdf.php');
require_once('../FPDI/fpdi.php');
$fileName = '../sample.pdf';
class PDF extends FPDI {
/**
* "Remembers" the template id of the imported page
*/
var $_tplIdx;
var $numPages = 0;
/**
* Draw an imported PDF logo on every page
*/
function Header() {
global $fileName;
if (is_null($this->_tplIdx)) {
$this->setSourceFile($fileName);
$this->_tplIdx = $this->importPage(1);
$this->numPages = $this->setSourceFile($fileName);
}
$size = $this->useTemplate($this->_tplIdx);
}
function Footer() {
// emtpy method body
}
}
// initiate PDF
$pdf = new PDF($fileName);
$pdf->setFontSubsetting(true);
// add a page
$pdf->AddPage();
// save file
$pdf->Output('output.pdf', 'F');
此处,最后一行$pdf->Output('output.pdf', 'F');
用于保存文件。但它没有用。当我只有$pdf->Output()
时,它在浏览器中显示pdf。
我已尝试$pdf->Output('output.pdf', 'D');
进行下载,但效果很好。似乎$pdf->Output('output.pdf', 'F');
仅起作用,并显示错误TCPDF ERROR: Unable to create output file: output.pdf
。
注意:没有文件权限问题
请有人指出这个问题。
答案 0 :(得分:12)
尝试放入ob_clean();正好在$ pdf->输出('output.pdf','F');
ob_clean();
// save file
$pdf->Output('output.pdf', 'F');
如果那不起作用。比你需要设置这样的路径:
$pdf->Output('yourpath/output.pdf', 'F');
如果你不知道绝对路径,试试这个:
$pdf->Output($_SERVER['DOCUMENT_ROOT'] . 'output.pdf', 'F');
答案 1 :(得分:5)
在' include / tcpdf_static.php'在静态函数' fopenLocal'中记录大约2435行。如果我删除了完整的“if”语句,那么......工作正常。
public static function fopenLocal($filename, $mode) {
/*if (strpos($filename, '://') === false) {
$filename = 'file://'.$filename;
} elseif (strpos($filename, 'file://') !== 0) {
return false;
}*/
return fopen($filename, $mode);
}
答案 2 :(得分:3)
这是使用tcpdf的laravel程序员的一个提示 如果要将pdf保存到公共目录,只需使用:
PDF::Output(public_path('/uploads/pdf/hello_world.pdf'),'F');
答案 3 :(得分:2)
问题是由文件路径引起的。我通过将$pdf->Output('output.pdf', 'F');
更改为绝对路径$pdf->Output('/var/www/yourdomain/output.pdf', 'F');
答案 4 :(得分:2)
您必须使用完整路径而不是相对路径,使用_DIR __:
$pdf->Output(__DIR__."/../invoices/invoice_".date('d-M-Y').".pdf", 'F');
答案 5 :(得分:0)
同时检查文件夹权限。因为我有同样的问题,我通过更改文件夹权限来解决它。
答案 6 :(得分:0)
我发现此错误也是由太多图像引起的。我试图用186张图像创建PDF,但出现此错误。我尝试了上述所有选项,但仍然收到此错误。然后我缩小图像(并用100张图像进行了测试),PDF创建成功。再次增加图像数量,然后再次出现错误。
答案 7 :(得分:0)
请确保在运行脚本时未在任何位置打开文件 sample.pdf 。如果它在其他地方打开,则TCPDF无法打开它。
答案 8 :(得分:0)
授予您要存储 output.pdf
文件的目录权限
chmod -R 0777 /yourdirectory