FPDI稍微裁剪了我导入的PDF

时间:2017-09-28 19:09:08

标签: php pdf fpdf fpdi

我正在使用FPDI和FPDF,当我导入我的pdf时,它具有全尺寸,美观的设计,出于某种原因,我保存在文件夹中的生成的pdf的大小略有修改,略小/裁剪在底部和右侧/左侧。如何按原样导入PDF?与原始尺寸完全相同?提前谢谢!

<?php
use setasign\Fpdi\Fpdi;

require_once('FPDF/fpdf.php');
require_once('FPDI/src/autoload.php');

// initiate FPDI
$pdf = new Fpdi();

$pdf->setSourceFile('file.pdf');
$tplidx = $pdf->importPage(1);

$pdf->addPage();
$pdf->useTemplate($tplidx);

$pdf->SetFont('Helvetica');
$pdf->SetXY(5, 5);
$pdf->Write(8, 'This is an example of inputted text.');

$filename="test8.pdf";
$pdf->Output($filename, 'F');

?>

1 个答案:

答案 0 :(得分:0)

这是一个很好的问题,表明FPDI不会修改PDF,但可以将页面导入可重用的结构。

您在构造函数或addPage()调用中未定义页面大小,因此生成的页面大小为A4(默认大小)。

如果你导入一个页面,例如字母格式此导入的页面不适合A4页面 - 确定。

有一些解决方案:

A:获取导入页面的大小,并使用以下参数调用AddPage():

$pageId = $this->ImportPage($pageNo);
$s = $this->getTemplatesize($pageId);
$this->AddPage($s['orientation'], $s);
$this->useTemplate($pageId); 

B:将useImportedPage() / useTemplate()方法的$ adjustPageSize参数设置为true:

$this->AddPage();
$pageId = $this->ImportPage($pageNo);
$this->useTemplate($pageId, ['adjustPageSize' => true); 

我建议使用解决方案A,因为它很直接。