Mar*_*ary 5 tiff extract itext
我正在使用iText提取嵌入的图像并将它们保存为单独的文件..jpg和.png文件出来了,但我无法提取具有CCITTFaxDecode编码的tiff图像.
有没有人有办法保存tiff文件?
我发现了一些使用iTextSharp的样本C#代码,用/ CCITTFaxDecode过滤器从PDF中 提取图像 它表示需要一个单独的tiff库来写出结果.根据那篇文章,"CCITTFaxDecode"压缩是针对tiff库的Compression.CCITTFAX4.
要使用该文章的方法,我需要:1.获取一个tiff库.Java Image I/O API允许您以其他格式读取和写入TIFF文件.BufferedImage image = ImageIO.read(new File("image.tif"));
我通过以下方式从扫描的 pdf(即每页图像)中提取了 tiff 图像:
...
PdfReader reader = new PdfReader("source.pdf");
PdfReaderContentParser parser = new PdfReaderContentParser(reader);
MyImageRenderListener listener = new MyImageRenderListener("destination.jpg");
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
parser.processContent(i, listener);
}
...
Run Code Online (Sandbox Code Playgroud)
MyImageRenderListener.class的代码:
class MyImageRenderListener implements RenderListener {
protected String path = "";
public MyImageRenderListener(String path) {
this.path = path;
}
public void beginTextBlock() {
}
public void endTextBlock() {
}
public void renderImage(ImageRenderInfo renderInfo) {
try {
String filename;
FileOutputStream os;
PdfImageObject image = renderInfo.getImage();
PdfName filter = (PdfName) image.get(PdfName.FILTER);
if (PdfName.CCITTFAXDECODE.equals(filter)) {
BufferedImage bufferedImage = image.getBufferedImage();
ImageIO.write(bufferedImage, "jpg", new FileOutputStream(filename));// save tif image as jpg
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void renderText(TextRenderInfo renderInfo) {
}
}
Run Code Online (Sandbox Code Playgroud)