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

如何在PDFBox中居中缩放后的页面内容

PDF页面缩放居中时Matrix平移位置错误问题及解决办法

尝试将PDF页面内容按指定比例缩放后居中显示时,使用Matrix.translate()函数总是出现位置偏移,仅当缩放比例为0.5时显示正常。

当前代码实现:

for (int i = 0; i < doc.getNumberOfPages(); i++) {
    pdfBuilder.addPage(doc.getPage(i));
    PDPage p = pdfBuilder.getDocument().getPage(i);
    Matrix matrix = new Matrix();
    float scaleFactor = 0.7f;
    float pageHeight = p.getMediaBox().getHeight();
    float pageWidth = p.getMediaBox().getWidth();
    float translateX = pageWidth *  (1 - scaleFactor);
    float translateY = pageHeight * (1 - scaleFactor);
    
    matrix.scale(scaleFactor, scaleFactor);
    matrix.translate(translateX, translateY);
    PDPageContentStream str = new PDPageContentStream(pdfBuilder.getDocument(), p, AppendMode.PREPEND,
            false);
    str.beginText();
    str.transform(matrix);
    str.endText();
    str.close();
}

曾尝试使用CropBox等其他页面框进行调整,但问题仍存在。


更新:解决方案

修正平移参数的计算逻辑后,问题得到解决。正确的平移参数计算方式如下:

float translateX = (pageWidth * (1- scaleFactor)) / scaleFactor / 2;
float translateY = (pageHeight * (1- scaleFactor)) / scaleFactor / 2;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:00:16