使用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
相关产品推荐
相关产品推荐

