问题描述
我正在尝试使用 FPDI/FPDF 从我项目中的本地路径获取现有 PDF 文件。 我按照说明操作,尝试正确制作,但我总是尝试导入 PDF 文件的命令(即使在我的本地主机或我的服务器中)我收到消息:
警告:fopen(doc/certificado.pdf):无法打开流:没有这样的 D:\Program 中的文件或目录 Files\ampps\www\certificado\utils\fpdi2\src\PdfParser\StreamReader.PHP 第 43 行
致命错误:未捕获的 invalidargumentexception:未提供流。在 D:\程序 Files\ampps\www\certificado\utils\fpdi2\src\PdfParser\StreamReader.PHP:105 堆栈跟踪:#0 D:\Program Files\ampps\www\certificado\utils\fpdi2\src\PdfParser\StreamReader.PHP(44): setasign\Fpdi\PdfParser\StreamReader->__construct(false,true) #1 D:\程序 Files\ampps\www\certificado\utils\fpdi2\src\FpdiTrait.PHP(172): setasign\Fpdi\PdfParser\StreamReader::createByFile('doc/certificado...') #2 D:\Program Files\ampps\www\certificado\utils\fpdi2\src\FpdiTrait.PHP(211): setasign\Fpdi\Fpdi->getPdfReaderId('doc/certificado...') #3 D:\Program Files\ampps\www\certificado\utils\gerarpdf.PHP(10): setasign\Fpdi\Fpdi->setSourceFile('doc/certificado...') #4 {main} 扔在 D:\Program Files\ampps\www\certificado\utils\fpdi2\src\PdfParser\StreamReader.PHP 在线 105
<?PHP
use setasign\Fpdi\Fpdi;
require_once('fpdf181/fpdf.PHP');
require_once('fpdi2/src/autoload.PHP');
$pdf = new Fpdi();
$pdf->AddPage();
$pdf->setSourceFile('doc/certificado.pdf');
$tplIdx = $pdf->importPage(1);
$pdf->useTemplate($tplIdx);
$pdf->SetFont('Arial','B','15');
$pdf->SetXY(90,50);
$pdf->Write(10,'Test of typing something.');
$pdf->Output('I','doc/generated.pdf');
?>
解决方法
校正可以通过两个选项完成,结果相同:
$pdf->setSourceFile(__DIR__ . "/../doc/certificado.pdf");
or
$pdf->setSourceFile('..\doc\certificado.pdf');