有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用pdfboxtools 2.0.3将JAVA pdf转换为tif

我正在将pdf文件转换为tif格式。为此,我使用pdfbox工具
组织的。阿帕奇。pdfbox版本为2.0.3。但它需要修改内置类TIFFUtil。java和MetaUtil。java向公众开放。我们有没有其他方法来代替触摸jar中的类

static void saveAsMultipageTIFF1(ArrayList<BufferedImage> bimTab, String filename, int dpi) throws IOException {
    Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("tiff");
    ImageWriter imageWriter = writers.next();

    ImageOutputStream ios = ImageIO.createImageOutputStream(new File(filename));
    imageWriter.setOutput(ios);
    imageWriter.prepareWriteSequence(null);
    for (BufferedImage image : bimTab) {
        ImageWriteParam param = imageWriter.getDefaultWriteParam();
        IIOMetadata metadata = imageWriter.getDefaultImageMetadata(new ImageTypeSpecifier(image), param);
        param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
        TIFFUtil.setCompressionType(param, image);
        TIFFUtil.updateMetadata(metadata, image, dpi);
        imageWriter.writeToSequence(new IIOImage(image, null, metadata), param);
    }
    imageWriter.endWriteSequence();
    imageWriter.dispose();
    ios.flush();
    ios.close();
}

共 (1) 个答案

  1. # 1 楼答案

    您可以使用以下选项将pdf转换为tiff文件

    import java.awt.image.*;
    import java.io.*;
    import javax.imageio.ImageIO;
    import org.icepdf.core.exceptions.*;
    import org.icepdf.core.pobjects.*;
    import org.icepdf.core.util.GraphicsRenderingHints;
    public class PDFToTIFF {
    private static final String FILEPATH = "<Your PDF File path>/yourPDF.pdf";
    public static void main(String[] args) {
          Document document = new Document();
          try {
             document.setFile(FILEPATH);
          } catch (PDFException ex) {
             System.out.println("Error parsing PDF document " + ex);
          } catch (PDFSecurityException ex) {
             System.out.println("Error encryption not supported " + ex);
          } catch (FileNotFoundException ex) {
             System.out.println("Error file not found " + ex);
          } catch (IOException ex) {
             System.out.println("Error IOException " + ex);
          }
          float scale = 3.5f;
          float rotation = 0f;
          for (int i = 0; i < document.getNumberOfPages(); i++) {
             BufferedImage image = (BufferedImage) document.getPageImage(
                 i, GraphicsRenderingHints.PRINT, Page.BOUNDARY_CROPBOX, rotation, scale);
             RenderedImage rendImage = image;
             try {
                System.out.println(" capturing page " + i);
                File file = new File("Image_" + i + ".tif");
                ImageIO.write(rendImage, "tiff", file);
             } catch (IOException e) {
                e.printStackTrace();
             }
             image.flush();
          }
          document.dispose();
    }
    }
    

    如果你想设置压缩和改变endianness,那么你可以使用一个ImageIO扩展插件(TwelveMonkeys ImageIO)来实现