如何使用FPDI按坐标导入PDF页面的指定区域?
如何用FPDI按坐标导入PDF的部分区域
嗨,很高兴看到你已经能用FPDI成功导入整页PDF了!针对你想按坐标导入第2页部分区域的需求,答案是完全可以的,不过importPage()方法的参数格式和你设想的略有不同,我来给你详细说明并提供可运行的示例代码。
核心方法说明
importPage()的第二个参数支持传入一个关联数组,用来指定你想要裁剪的区域,数组里可以包含以下键值对:
x: 裁剪区域的起始X坐标(以PDF原页面的左下角为原点)y: 裁剪区域的起始Y坐标width: 裁剪区域的宽度height: 裁剪区域的高度
修改后的示例代码
<?php use setasign\Fpdi\Fpdi; use setasign\Fpdi\PdfReader; require_once('fpdf/fpdf.php'); require_once('fpdi/src/autoload.php'); $pdfpage2 = new Fpdi(); $pageCount = $pdfpage2->setSourceFile('dummy1.PDF'); // 导入第2页的指定区域:从x=10, y=10开始,裁剪宽150、高200的区域 $pageId = $pdfpage2->importPage(2, [ 'x' => 10, 'y' => 10, 'width' => 150, 'height' => 200 ]); $pdfpage2->addPage(); // 将裁剪后的区域添加到新页面,还可以通过useImportedPage的后续参数调整位置和缩放 $pdfpage2->useImportedPage($pageId); $pdfpage2->Output(F,'Part2.pdf'); ?>
额外提示
- 坐标原点注意:PDF的用户空间默认以页面左下角为原点,和我们日常习惯的左上角原点不同,设置坐标时别搞反了。
- 获取原页面尺寸:如果你不确定原页面的尺寸,可以用
getPageSize()方法获取:$pageSize = $pdfpage2->getPageSize(2); // $pageSize['width'] 和 $pageSize['height'] 就是原页面的宽高 - 缩放与位置调整:
useImportedPage()还支持额外参数来调整导入区域在新页面的位置和缩放比例,比如:// 将裁剪区域缩放到宽100,高自适应,放在新页面的x=20, y=30位置 $pdfpage2->useImportedPage($pageId, 20, 30, 100);
内容的提问来源于stack exchange,提问作者Jan jansen
相关产品推荐
相关产品推荐

