iText:如何将图片添加到PDF页面顶部

4
我将要把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;



    }
2个回答

15

您正在创建一个新的A4页面文档(而不是使用LETTER格式)。这些页面的宽度为595 pt,高度为842 pt。坐标系的原点(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),图片将会被裁剪在右侧。

0
根据答案,此代码可以将任何大小的图像居中。
image.setAbsolutePosition((PageSize.A4.getWidth() - img.getScaledWidth())/2, (PageSize.A4.getHeight() - img.getScaledHeight())/2 );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接