【问题标题】:JAVA pdf to tif conversion using pdfbox-tools- 2.0.3使用 pdfbox-tools- 2.0.3 将 JAVA pdf 转换为 tif
【发布时间】:2017-12-08 01:00:00
【问题描述】:

我正在将 pdf 文件转换为 tif 格式。为此,我正在使用 pdfbox-tools
org.apache.pdfbox 的版本为 2.0.3。但需要将内置类 TIFFUtil.java 和 MetaUtil.java 修改为 public。我们有没有其他方法可以代替触摸 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();
}

【问题讨论】:

  • 当前版本为 2.0.6。是什么阻止您复制这两个类的源代码并根据需要对其进行修改?
  • 是的,我们可以使用 2.0.6。但我想知道我们是否有任何其他方法,而不是显式使用 jar 中的类?
  • 不行,除非你复制jar的源。这是免费的。顺便说一句,你问题中的代码对我来说有点熟悉......啊,是的,它来自这里:stackoverflow.com/a/31974376/535646

标签: java pdf pdfbox tiff file-conversion


【解决方案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();
}
}

如果你想设置压缩和改变字节顺序,那么你可以使用 ImageIO 扩展插件(TwelveMonkeys ImageIO)之一来做到这一点。

【讨论】:

  • 与问题中的代码不同,您的代码 ImageIO.write(rendImage, "tiff", file); 不会创建多页 tiff 文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
  • 2011-07-02
  • 1970-01-01
  • 2014-06-13
相关资源
最近更新 更多