`
shappy1978
  • 浏览: 707878 次
  • 性别: 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是Apache软件基金会的一个开源项目,专门用于处理PDF(Portable Document Format)文档的Java库。这个库提供了广泛的API,让开发者能够创建、修改、提取和显示PDF文档内容。PDFBox 1.6.0是该库的一个版本,...

    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使用jar包

    PDFBox是Apache软件基金会的一个开源项目,主要用于处理PDF(Portable Document Format)文档。这个库提供了丰富的API,使得开发者能够创建、编辑、阅读和打印PDF文件。在这个场景中,提到的"pdfbox使用jar包"指的是...

    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版本,

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

    PDFBox是Apache软件基金会开发的一个开源Java库,用于处理PDF(Portable Document Format)文档。这个库提供了丰富的API,使得开发者可以方便地创建、修改、读取和操作PDF文档。在这个压缩包中,我们找到了三个核心...

    PDFBox-0.7.3.rar

    PDFBox是Apache软件基金会的一个开源项目,主要用于处理PDF(Portable Document Format)文档。这个压缩包“PDFBox-0.7.3.rar”包含了版本0.7.3的PDFBox库,该版本可能发布于若干年前,因为当前的PDFBox版本已经更新...

    C#使用PDFBox读取PDF

    PDFBox是一个开源的Java库,主要用于处理PDF文档,但也可以通过.NET平台的Java interop技术在C#中使用。本篇文章将详细介绍如何在C#环境中利用PDFBox库来读取PDF文件的内容,并将其转换为TXT格式进行保存。 首先,...

    pdfbox-1.8.2.jar

    PDFBox是Apache软件基金会开发的一个开源Java库,用于处理PDF(Portable Document Format)文档。`pdfbox-1.8.2.jar`是该库的一个版本,主要用于在Java应用程序中进行PDF文档的创建、读取、修改和转换。下面将详细...

    pdfbox-1.2.1源码下载

    PDFBox是Apache软件基金会的一个开源项目,主要用于处理PDF(Portable Document Format)文档。在这个特定的版本,即PDFBox-1.2.1,用户可以获取到项目的源代码,这对于开发者来说是一个宝贵的资源,因为它提供了...

    pdfbox所需jar包

    PDFBox是Apache软件基金会开发的一个开源Java库,用于处理PDF(Portable Document Format)文档。它提供了许多功能,包括创建、编辑、阅读、提取文本和图像,以及签署PDF文档。在这个场景中,"pdfbox所需jar包"指的...

    pdfbox实例

    PDFBox是Apache软件基金会开发的一个开源Java库,用于处理PDF(Portable Document Format)文档。它提供了许多API,允许开发者创建、编辑、读取和提取PDF文档的信息。在本实例中,我们将深入探讨如何使用PDFBox ...

    pdfbox1.8.3.dll C#

    PDFBox是Apache软件基金会的一个开源项目,主要用于处理PDF文档。在C#环境下,开发者通常需要借助第三方库来处理PDF文件,因为.NET Framework原生并不支持PDF操作。在本例中,我们关注的是一个名为"pdfbox1.8.3.dll...

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

    pdfbox for .Net目前的最新版PDFBox-2.0.12 用法: 首先在引用中将下载的dll添加到项目中,同时在cs文件中引入命名空间using org.apache.pdfbox.text; 然后可以按如下代码编写demo PDDocument doc = PDDocument.load...

    PDFBox pdf 转换为word文档

    PDFBox是Apache软件基金会开发的一个开源Java库,用于处理PDF(Portable Document Format)文档。它提供了丰富的API,允许开发者在应用程序中创建、编辑、读取和转换PDF文档。在这个特定的场景中,我们关注的是使用...

    java使用pdfbox打印PDF

    为了解决这个问题,我们可以借助开源库如PDFBox。在这个场景中,我们使用的PDFBox版本是2.0.8,它是一个强大的工具,能够帮助开发者读取、创建、编辑PDF文档,并且提供了打印功能。 PDFBox是由Apache软件基金会开发...

    pdfbox 开源源码

    PDFBox是Apache软件基金会的一个开源项目,主要用于处理PDF文档。这个源码库包含了处理PDF文档的各种功能,如读取、写入、编辑和签署PDF文件。对于开发者来说,深入理解PDFBox的源码有助于定制化需求,提升PDF处理...

    pdfbox转图片所需字体

    PDFBox是Apache软件基金会开发的一个Java库,用于处理PDF文档。在使用PDFBox将PDF转换为图片的过程中,可能会遇到一个问题,即转换后的图片显示的文字不完整或者丢失。这通常是由于PDF文档中使用的某些字体在目标...

    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....

    pdfbox所有jar包以及源码

    PDFBox是Apache软件基金会的一个开源项目,主要用于处理PDF(Portable Document Format)文档。这个压缩包包含了PDFBox的所有jar包以及源码,对于开发者来说,这是一个非常宝贵的资源,可以帮助理解和操作PDF文档,...

Global site tag (gtag.js) - Google Analytics