使用PDF-Lib绘制指定尺寸图片时页面尺寸不符的解决咨询
解决PDF-Lib绘制图片页面尺寸不符的问题
问题根源:PDF的页面尺寸单位是点(pt,1pt=1/72英寸),你直接将像素值作为页面尺寸传入,导致页面被错误放大(780pt换算成厘米是780/72*2.54≈27.43cm,和你测量的27.5cm一致)。
正确处理步骤:
- 先将目标物理尺寸(6cm×11.3cm)转换成PDF的pt单位:
- 转换公式:
厘米值 / 2.54 * 72(因为1英寸=2.54cm=72pt) - 计算结果:6cm≈170.08pt,11.3cm≈319.76pt
- 转换公式:
- 用转换后的pt值设置页面尺寸
- 绘制图片时指定尺寸为页面尺寸,确保图片按原物理尺寸显示
修改后的代码:
// 目标物理尺寸:6cm × 11.3cm,转换为PDF的pt单位 const pageWidth = 6 / 2.54 * 72; // ≈170.08pt const pageHeight = 11.3 / 2.54 * 72; // ≈319.76pt let page: PDFPage; page = pdfDoc.addPage([pageWidth, pageHeight]); const imageBytes = await fetch(MyImageAsString).then((response) => response.arrayBuffer()); const image = await pdfDoc.embedPng(imageBytes); // 按页面尺寸绘制图片,确保符合物理尺寸要求 page.drawImage(image, { x: 0, y: 0, width: pageWidth, height: pageHeight, });
补充说明:
你的图片是300DPI的780px×1406px,这个尺寸对应的物理尺寸正好是6cm×11.3cm(780/300*2.54≈6cm,1406/300*2.54≈11.3cm),所以只要将页面尺寸设置为对应的pt值,再按页面尺寸绘制图片,就能得到符合要求的PDF页面。
内容的提问来源于stack exchange,提问作者Foxhunt
相关产品推荐
相关产品推荐

