You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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');
?>

额外提示

  1. 坐标原点注意:PDF的用户空间默认以页面左下角为原点,和我们日常习惯的左上角原点不同,设置坐标时别搞反了。
  2. 获取原页面尺寸:如果你不确定原页面的尺寸,可以用getPageSize()方法获取:
    $pageSize = $pdfpage2->getPageSize(2);
    // $pageSize['width'] 和 $pageSize['height'] 就是原页面的宽高
    
  3. 缩放与位置调整:useImportedPage()还支持额外参数来调整导入区域在新页面的位置和缩放比例,比如:
    // 将裁剪区域缩放到宽100,高自适应,放在新页面的x=20, y=30位置
    $pdfpage2->useImportedPage($pageId, 20, 30, 100);
    

内容的提问来源于stack exchange,提问作者Jan jansen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:16:59