作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 iText 提取嵌入的图像并将它们保存为单独的文件。 .jpg 和 .png 文件没有问题,但我无法提取具有 CCITTFaxDecode 编码的 tiff 图像。
有没有人有保存tiff文件的方法?
我在以下位置找到了一些使用 iTextSharp 的示例 C# 代码
Extracting image from PDF with /CCITTFaxDecode filter
它表示需要一个单独的 tiff 库来写出结果。根据那篇文章,tiff 库的“CCITTFaxDecode”压缩是 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);
}
...
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) {
}
}
关于itext - 使用 iText 和 Java 保存 tiff CCITTFaxDecode(来自 PDF 页面),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6851385/
我正在使用 iText 提取嵌入的图像并将它们保存为单独的文件。 .jpg 和 .png 文件没有问题,但我无法提取具有 CCITTFaxDecode 编码的 tiff 图像。 有没有人有保存tiff
我是一名优秀的程序员,十分优秀!