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

使用FPDF将图片转PDF时如何保留图片的原始宽高?

使用FPDF保留图片原始尺寸生成PDF

要让转换后的PDF完全保留图片的原始宽高,你需要先获取图片的真实尺寸,再根据这个尺寸调整PDF的页面大小,避免FPDF自动缩放图片。下面是修改后的代码:

<?php
require("fpdf.php");

$image = "my_image.jpg";
// 获取图片原始尺寸(像素)
list($width, $height) = getimagesize($image);

// 像素转毫米(假设图片分辨率为96DPI,1英寸=25.4mm,1英寸=96像素)
$pdfWidth = $width * 25.4 / 96;
$pdfHeight = $height * 25.4 / 96;

// 创建PDF实例,设置页面尺寸为图片转换后的尺寸
$pdf = new FPDF('P', 'mm', array($pdfWidth, $pdfHeight));
$pdf->AddPage();

// 插入图片,指定宽高为转换后的毫米值,确保完全匹配
$pdf->Image($image, 0, 0, $pdfWidth, $pdfHeight, "jpg");
$pdf->Output("convert.pdf", "F");
?>

关键说明:

  • getimagesize():直接获取图片的原始像素宽高,这是保证尺寸准确的核心
  • 单位转换:FPDF默认使用毫米作为单位,所以需要把像素转换成毫米(如果你的图片DPI不是96,比如72,就把公式里的96换成72即可)
  • 自定义页面尺寸:创建PDF时直接把页面大小设为图片的尺寸,这样图片不需要缩放就能填满整个页面
  • Image()方法参数:指定x=0、y=0让图片从页面左上角开始,宽高设为转换后的尺寸,确保完全匹配原始图片大小

如果不需要转换单位,也可以直接把FPDF的单位设为像素,代码更简单:

<?php
require("fpdf.php");

$image = "my_image.jpg";
list($width, $height) = getimagesize($image);

// 设置单位为像素,页面尺寸用图片原始宽高
$pdf = new FPDF('P', 'px', array($width, $height));
$pdf->AddPage();

// 插入图片,直接用原始像素尺寸
$pdf->Image($image, 0, 0, $width, $height, "jpg");
$pdf->Output("convert.pdf", "F");
?>

这样生成的PDF页面大小和图片原始尺寸完全一致,不会有任何缩放。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:30:46