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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 02:15:04