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

 wjdd8888 发布于 2023-02-06 19:37

我将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),图像将在右侧被剪裁.

1 个回答
  • 您正在创建一个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),图像将在右侧被剪裁.

    2023-02-06 19:40 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有