我将tiff转换为pdf文件,但是图像显示在页面底部,如何从pdf页面的顶部开始图像.
private static String convertTiff2Pdf(String tiff) { // target path PDF String pdf = null; try { pdf = tiff.substring(0, tiff.lastIndexOf('.') + 1) + "pdf"; // New document A4 standard (LETTER) Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(pdf)); document.setMarginMirroring(true); int pages = 0; document.open(); PdfContentByte cb = writer.getDirectContent(); RandomAccessFileOrArray ra = null; int comps = 0; ra = new RandomAccessFileOrArray(tiff); comps = TiffImage.getNumberOfPages(ra); // Convertion statement for (int c = 0; c < comps; ++c) { Image img = TiffImage.getTiffImage(ra, c+1); if (img != null) { img.scalePercent(7200f / img.getDpiX(), 7200f / img.getDpiY()); img.setAbsolutePosition(0, 0); img.scaleAbsolute(600, 250); cb.addImage(img); document.newPage(); ++pages; } } ra.close(); document.close(); } catch (Exception e) { System.out.println(e); pdf = null; } System.out.println("[" + tiff + "] -> [" + pdf + "] OK"); return pdf; }
Bruno Lowagi.. 9
您正在创建一个A4页面的新文档(而不是使用LETTER格式).这些页面的宽度为595磅,高度为842磅.坐标系的原点位于(0, 0)
左下角,这正是您使用该方法添加图像的位置setAbsolutePosition(0, 0);
令人惊讶的是,您不会将页面大小调整为图像大小.相反,您想要在页面顶部添加图像.在这种情况下,您需要更改绝对位置的坐标,如下所示:
img.setAbsolutePosition(0, PageSize.A4.getHeight() - img.getScaledHeight());
如果img.getScaledHeight()
超过PageSize.A4.getHeight()
(等于842
),您的图像将被剪裁在底部.如果img.getScaledWidth()
超过PageSize.A4.getWidth()
(等于595
),图像将在右侧被剪裁.
您正在创建一个A4页面的新文档(而不是使用LETTER格式).这些页面的宽度为595磅,高度为842磅.坐标系的原点位于(0, 0)
左下角,这正是您使用该方法添加图像的位置setAbsolutePosition(0, 0);
令人惊讶的是,您不会将页面大小调整为图像大小.相反,您想要在页面顶部添加图像.在这种情况下,您需要更改绝对位置的坐标,如下所示:
img.setAbsolutePosition(0, PageSize.A4.getHeight() - img.getScaledHeight());
如果img.getScaledHeight()
超过PageSize.A4.getHeight()
(等于842
),您的图像将被剪裁在底部.如果img.getScaledWidth()
超过PageSize.A4.getWidth()
(等于595
),图像将在右侧被剪裁.