是否有可能阅读现有PDF内容的位置,并在laravel中的现有内容之后添加一些内容?

问题描述

Laravel软件包: “ setasign / fpdi”:“ ^ 2.3”, “ setasign / fpdf”:“ ^ 1.8”

$pdf = new \setasign\Fpdi\Fpdi('L','mm','A4');
$pageCount = $pdf->setSourceFile(public_path().'/'.$url);
$pdf->setFont('Arial','B',10);
for($i = 1; $i <= $pageCount; $i++){
    $tplIdx = $pdf->importPage($i);
    $pageDimensions = $pdf->getImportedPageSize($tplIdx);
    $pdf->addPage($pageDimensions['orientation'],$pageDimensions);
    $pdf->useTemplate($tplIdx);
 }

如果可能,请读取最后一页的内容,并获取当前位置的后一页内容纵坐标。然后写新内容而无需添加页面或空白

解决方法

如果使用DomPdf生成Pdf,那么您可以使用生成HTML文件

$pdf->getDomPDF()->outputHtml()

使用DomPDF生成的html文件中添加如下所示的元素:

<div id="divId"></div>

然后,每当需要编辑此文档时,都需要逐行阅读HTML文件,然后 编辑文件:

$url=public_path() .'/test.html';
$htmlFile='';
foreach(file($url) as  $key => $line){
  if(strpos($line,'id="divId"') !== false){
    $line='<div>Hello world</div>';
  }
  $htmlFile.=$line;
}
$pdf = PDF::loadHTML($htmlFile)->setPaper('a4','landscape');
$pdf->output();