Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java iText:如何将图像添加到PDF页面顶部_Java_Itext - Fatal编程技术网

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

Java iText:如何将图像添加到PDF页面顶部,java,itext,Java,Itext,我要将tiff转换为pdf文件,但图像显示在页面底部,如何从pdf页面顶部开始图像 private static String convertTiff2Pdf(String tiff) { // target path PDF String pdf = null; try { pdf = tiff.substring(0, tiff.lastIndexOf('.') + 1) + "pdf";

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



    }
私有静态字符串转换器tiff 2PDF(字符串tiff){
//目标路径PDF
字符串pdf=null;
试一试{
pdf=tiff.substring(0,tiff.lastIndexOf('.')+1)+“pdf”;
//新文件A4标准(字母)
文档=新文档();
PdfWriter writer=PdfWriter.getInstance(文档,新文件输出流(pdf));
document.setMarginMirroring(true);
int pages=0;
document.open();
PdfContentByte cb=writer.getDirectContent();
RandomAccessFileOrArray ra=null;
int comps=0;
ra=新随机存取文件阵列(tiff);
comps=TiffImage.getNumberOfPages(ra);
//转换语句
对于(int c=0;c[”+pdf+“]OK”);
返回pdf;
}

您正在创建一个A4页的新文档(与使用字母格式相反)。这些页面的宽度为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
),图像将被剪裁到右侧。

根据答案,此代码将以任何大小的图像为中心

image.setAbsolutePosition((PageSize.A4.getWidth()-img.getScaledWidth())/2,(PageSize.A4.getHeight()-img.getScaledHeight())/2);