如何在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
相关产品推荐
相关产品推荐

