java - 使用 iText 从 TIFF 图像创建 PDF

标签 java itext

我目前正在使用 iText 从 TIFF 图像生成 PDF 文件。

大致流程如下: 1. 读取 TIFF 文件。 2. 对于 TIFF 的每个“页面”,实例化一个 Image 对象并将其写入 Document 实例,这是 PDF 文件。

我很难理解如何将这些图像添加到 PDF 中并保持原始分辨率。

我尝试将图像缩放到 TIFF 原始图像的像素尺寸,例如:

// Pixel Dimensions 1728 × 2156 pixels
// Resolution 204 × 196 ppi
RandomAccessFileOrArray tiff = new RandomAccessFileOrArray("/path/to/tiff/file");
Document pdf = new Document(PageSize.LETTER);
Image temp = TiffImage.getTiffImage(tiff, page);
temp.scaleAbsolute(1728f, 2156f);
pdf.add(temp);

如果有人能阐明这一点,我将非常感激。也许我缺少 Image 类方法的功能...

提前致谢!

最佳答案

我认为如果缩放图像,则无法保留原始分辨率(如果我错了,请纠正我:))。 您可以尝试做的是创建一个具有不同大小页面的 PDF 文档(如果 tif 图像中的图像具有不同的分辨率)。

尝试以下代码。它将 PDF 页面的大小设置为等于图像文件的大小,然后创建该 PDF 页面。 PDF 页面大小根据图像大小而变化,因此分辨率保持不变:)

import java.io.FileOutputStream;
import java.io.IOException;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.RandomAccessFileOrArray;
import com.itextpdf.text.pdf.codec.TiffImage;

public class Tiff2Pdf {

    /**
     * @param args
     * @throws DocumentException
     * @throws IOException
     */
    public static void main(String[] args) throws DocumentException,
            IOException {

        String imgeFilename = "/home/saurabh/Downloads/image.tif";

        Document document = new Document();
        PdfWriter writer = PdfWriter.getInstance(
                document,
                new FileOutputStream("/home/saurabh/Desktop/out"
                        + Math.random() + ".pdf"));
        writer.setStrictImageSequence(true);
        document.open();

        document.add(new Paragraph("Multipages tiff file"));
        Image image;
        RandomAccessFileOrArray ra = new RandomAccessFileOrArray(imgeFilename);
        int pages = TiffImage.getNumberOfPages(ra);
        for (int i = 1; i <= pages; i++) {
            image = TiffImage.getTiffImage(ra, i);
            Rectangle pageSize = new Rectangle(image.getWidth(),
                    image.getHeight());
            document.setPageSize(pageSize);
            document.add(image);
            document.newPage();
        }

        document.close();

    }

}

关于java - 使用 iText 从 TIFF 图像创建 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7721447/

相关文章:

java - JOGL 2.0 的 GLProfile 中的空指针异常

java - 您可以同时使用 iText 在 Java 中查看和编辑 PDF 吗?

java - 我的文件夹中有 900 个 .pdf 格式的文件。我必须将 .pdf 逐一转换为 .csv 并将这些 csv 存储在另一个文件夹中

Java String.getBytes() 问题

java - 将指纹模板保存到数据库 mysql - java

java - 时间复杂度 : Getting incorrect result

java - 谁调用了 wait() 方法,主线程或用于调用 wait() 的实例

java - 接口(interface) Enum 的静态方法

java - Barcode128 - 3 位字符串条码宽度大于 4 位字符串条码

java - 如何使用itext从具有内置编码的pdf中提取PRStream?