`
shappy1978
  • 浏览: 680542 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

PDFBox又濑耶

    博客分类:
  • J2EE
阅读更多

今天PDFBox又罢.工了,某个扫描的pdf无法解析,报告错误如下:

Unknown stream filter:COSName{JBIG2Decode}

搜了一下,发现是不支持JBIG2格式的图片导致,https://issues.apache.org/jira/browse/PDFBOX-81 似乎提供了补丁,试了一下,没用,虽然不再报错了,但是导出来的是一半黑色的图片,似乎还是图片格式的问题,或者还是因为jai不支持这种新的图片格式吧。(实际上是导出的图片完全是黑色,再加上坐标映射错误导致)

关于JBIG2的说明:

JBIG2 is a format for black and white images that produces files "3-5 times smaller" than Group 4 FAX.  JBIG2 is particularly useful for businesses with large volumes of scanned paper, as the space savings is multiplied by millions of pages, for storage online and archival and network transmission.  It has been adopted by  customer  in the version of PDF that is supported in Acrobat 5.

 

It was great to see JPEG2000 support in the JAI Image I/O   Tools 1.0 beta, and it would be nice if its, in a sense, companion for black and white images were provided too.

 

See this web page for more information:

http://www.jpeg.org/jbigpt2.html

 

似乎是jpeg的一种格式?http://www.jpeg.org/public/fcd14492.pdf

目前还在积极寻找解决方案,ghost script似乎是一种,不过我倾向与开源的。目前连jbig2是一种什么样的图片都不知道,foxit editor都无法显示(最新版可以显示),也不要说导出来了。

//***************************************************

拿到图片了,这种格式古怪的图片windows无法预览,图片查看器无法打开,acdsee32无法打开,连ps8都无法处理。我了的去的!可以下载附件后去掉jpg后缀改为jb2,他实际上不是jpeg格式的。(实际上windows不支持这种图片,多数图片浏览软件也不支持它)

//***************************************************101220

JBIG2Viewer集成了一个本地的jbig2图片处理小工具,通过它可以查看一些jbig2的图片,从显示效果上看确实是只有黑白二色的图片,不过我的扫描图显然是更进一步的灰度图,这真的是jbig2格式的图片吗?还是它的一种进阶格式?套用jpedal的decoder发现无法解码,怀疑根本不是这种编码,茫然ing...

    黔驴技穷了丫,nnd,pdf的封闭性太好了,找了n个编辑工具都无法导出里面的图片,现在怀疑图片格式根本不是jbig2的,但是替换了几个原有的encoder都无法正常解析出图片,是虾米原因呢,难道要考虑用用gs?

//***************************************************

    有点转折了,g到icepdf论坛上提到jbig2的解析,某答复曰icepdf4.1是增加了jbig2并且可以显示的,这个是开源的,应该看看,按图索骥,可惜利用的还是jpedal,结果毫无疑问还是一样,看看所谓的icepdf pro表现如何吧。viewer表现一般,解析速度较慢,除了jbig2,其它的显示还ok,不过很多中文数字重叠在一起,文字解析应该还有问题,出错误没有抛出而是被吃掉。

//***************************************************

显然pdfbox的JBig2Filter是有问题的,在解码数据前没有设置setGlobalData,这似乎是应该从options中获取的,对于pdf的结构和各种解码器都没有太多的了解,所以看的很费劲。setGlobalData似乎是为了设置segment。或者他适合处理一种简单格式的jbig2图片,或者他在之前缺少对压缩数据的处理,例如增加header之类的预处理。

//***************************************************

    在debug状态下调试icepdf4.1.1,终于可以了,里面还是有个小bug的.原因也是globalData没有设置,不过和pdfbox的类之间差异较大,头疼,明天应该可以解决吧,总好过看几百页的英文文档在比对类去学习.

//***************************************************

http://hackipedia.org/File%20formats/Adobe%20PDF/Adobe%20Portable%20Document%20Format%20v1.7.pdf.raw-conversion.utf-8.txt

尽管很头疼的啃了一天资料并做debug,虽然大致了解了一些基本的数据结构,不过死活找不到存放globaldata的流,感觉上应该是options的filterStream,不过读取后全部是0,globaldata的filterstream也不行,接近崩溃了丫,了解和动手差别太大了,指望我一两天就了解pdf的结构显然不太现实.(成功和失败实际上之差了一点点阿:<)

//***************************************************101228

解决了,参考icepdf的代码,不过两者的类差别还是很大的,icepdf的结构比较简单,思路教直接. 正常设置了globaldata后可以解码出图像,imageIO是无法处理jbig2的.

不过又发现pdfbox的坐标平移出现了问题,另外还发现了乱码问题(文字),处理大图片的内存溢出的情况.

嗯,先把这些问题解决了,再参考一下其它软件的处理效果.

//***************************************************

实际上page对象中的content属性除了放置文字内容,如果是放图片对象时,里面会存放坐标投影信息(映射矩阵,cm).文字用BT+ET包含.

//***************************************************

关于bb平移的问题解决了,实际上这又是bb的一个bug,忘记剪掉页边距,虽然大多数文件的页边距都是0,但是不意味着所有的都是这样。没想到问题拖了一年才解决了

//***************************************************110107

再次fix bb的一个bug,处理某些早期转换的tiff图片时(显示客户的pdf是由acrobat5制作的),会把tiff图片显示为黑底白字,实际上导入tiff图片时会把它的文件头拆解出来,这和jbig2一样,然后导出时在组装header,其中有一个BlackIs1参数是作为反色的,不过客户的pdf文件没有这个参数,查询了adobe的官方格式文档,也没有发现有另外的参数设置反色,后来自己发现有一个Decode的数组参数,用两位数组分别代表北京和文字的颜色,相当奇怪adobe的文档中没有找到对应参数的说明,bb当然更不会有了,增加了对应参数的判断后,显示正常。

  • 大小: 65 KB
分享到:
评论

相关推荐

    pdfbox,pdfbox,pdfbox

    pdfbox,pdfbox,pdfbox,pdfbox

    PDFBox-2.0.19 for .Net | c#用PDFBox解析PDF

    pdfbox for .Net目前的最新版PDFBox-2.0.19 用法: 将压缩包内所有dll拷贝到项目编译目录, 在项目中引用 IKVM.OpenJDK.Core.dll IKVM.OpenJDK.SwingAWT.dll pdfbox-app-2.0.19.dll 在代码中引入命名空间using org....

    PDFbox-app-2.0.9.jar;PDFbox.jar包

    PDFbox.jar,2.0.9版本,PDFbox.jar,2.0.9版本,PDFbox.jar,2.0.9版本,PDFbox.jar,2.0.9版本,

    pdfbox1.0.jar

    使用PDFBox操作PDF 1.6版本时会出现错误: (1)pdfbox0.7.3 java.lang.NullPointerException at org.pdfbox.pdmodel.PDPageNode.getCount(PDPageNode.java:116) at org.pdfbox.pdmodel.PDDocument....

    【Java】基于Pdfbox解析PDF文档中指定位置的文字和图片

    1.1 PDFBOX介绍 Apache PDFBox是一个开源Java库,支持PDF文档的开发和转换。 我们可以使用PDFBox开发可以创建,转换和操作PDF文档的Java程序。PDFBox的主要功能: Extract Text – 使用PDFBox,您可以从PDF文件中...

    pdfbox-2.0.8.jar,fontbox-2.0.8.jar,pdfbox-tools-2.0.8.jar

    pdfbox包(pdfbox-2.0.8.jar,fontbox-2.0.8.jar,pdfbox-tools-2.0.8.jar)

    pdfbox-2.0.19所有jar包

    pdfbox-2.0.19所有jar包fontbox-2.0.19,pdfbox-2.0.19,pdfbox-debugger-2.0.19,pdfbox-tools-2.0.19,xmpbox-2.0.19,preflight-2.0.19

    pdfbox-2.0.7全部jar包

    pdfbox-2.0.7.jar fontbox-2.0.7.jar preflight-2.0.7.jar xmpbox-2.0.7.jar pdfbox-tools-2.0.7.jar pdfbox-debugger-2.0.7.jar

    C#使用PDFBox读取PDF

    C#中使用PDFBox读取PDF的内容,转换成TXT文件保存。

    pdfbox-2.0.8.jar pdfbox 2.0.8 解析pdf获得文本内容

    java中pdfbox 2.0.8 解析pdf获得文本内容

    pdfbox-2.0.19.jar

    pdfbox-2.0.19 PDFBox是一个为开发人员读取和创建PDF文档而准备的纯Java类库。

    pdfbox-1.2.1源码下载

    pdfbox-1.2.1源码下载,可以将pdf文件转化成jpg,gif,tif格式图片

    pdfbox 提取 pdf文件中的图片

    PDFBox是一个开源的可以操作PDF文档的Java PDF类库。它可以创建一个新PDF文档,操作现有PDF文档并提取文档中的内容。 它具有以下特性: 1.将一个PDF文档转换输出为一个文本文件。 2.可以从文本文件创建一个PDF文档。 ...

    pdfbox实例

    pdfbox源码实例,简单易懂,用于java项目处理PDF文档

    pdfbox1.8.3.dll C#

    最新版pdfbox1.8.3 C#版 通过iKVM转换过来的! 性能比之前版本号。运行时会报错,根据错误将bin中相应的dll引入即可。

    适用于C#的PDFBox-dll(1.8.9 Net版)

    本资源是已编译好,最新版PDFbox1.8.9,直接用于C# 1、在代码中引用 IKVM.OpenJDK.Core.dll IKVM.OpenJDK.SwingAWT.dll pdfbox-1.8.9.dll 2、将下列DLL复制到程序编译目录 commons-logging.dll fontbox-1.8.9.dll ...

    Pdfbox 1.7 dll

    最新pdfbox dll,亲测可用! 原来流传的0.7.3的对于好多pdf打不开,而且功能很少。最新的修复已知所有问题哦! 包含: IKVM.OpenJDK.Core.dll (4 MB) IKVM.OpenJDK.SwingAWT.dll (6 MB) pdfbox-1.7.0.dll (4 MB) ...

    pdfbox-3.0.0-RC1.jar

    pdfbox-3.0.0-RC1 PDFBox是Java实现的PDF文档协作类库,提供PDF文档的创建、处理以及文档内容提取功能,也包含了一些命令行实用工具。

    PDFBox.Net-1.8.9

    PDFBox.Net-1.8.9

Global site tag (gtag.js) - Google Analytics