gpt4 book ai didi

java - iText 2.1.7 中的 PdfStamper 是否存在错误?

转载 作者:太空宇宙 更新时间:2023-11-04 07:55:58 25 4
gpt4 key购买 nike

我正在尝试在我的应用程序中使用 iText 2.1.7。我将问题确定为以下代码:

InputStream inputFile = ...
OutputStream outputStream = ...
PdfReader pdfReader = new PdfReader(fis);
PdfStamper pdfStamper = new PdfStamper(pdfReader, os, '0', true);

pdfStamper.close();
pdfReader.close();
outputStream .close();

当我使用 this 作为输入时,此代码会生成损坏的 pdf(错误 118) pdf(这是波兰纳税表)。您知道这个问题是否有一些简单的解决方法?我知道 c#/iTextSharp 中的相应代码可以工作。

编辑:这不是加密问题。我已经解决了这个问题。

最佳答案

正如评论中提到的,相关文档已加密以限制权限。因此,在实例化 PdfStamper 时,官方 iText 2.1.7 jar 中的代码将抛出 BadPasswordException,因为未提供正确的密码。因此,它不会生成损坏的 PDF,因此这里的问题不是错误。;)

话虽这么说,当然可以强制 iText 2.1.7 忽略未提供密码的事实。在这种情况下,程序(在必要时更正了变量名称)确实生成了一个 PDF,Adobe Acrobat 拒绝打开该 PDF,并显示错误代码 118。

另一方面,对当前的 iText 5.x 执行相同操作,会生成 Adob​​e Acrobat 打开时没有任何异议的文档。

如果比较这两个输出,问题就很清楚了。在 iText 2.1.7 中,更新后的信息字典如下所示:

16 0 obj
<<
/Creator(ADEP Document Services … Designer 10.0)
/Producer(Adobe LiveCycle Forms ES3; modified using iText 2.1.7 by 1T3XT)
/schemat(http://crd.gov.pl/wzor/2011/12/19/732/)
/Title(PIT-37)
/wersja_schemy(1-0E)
/ModDate(D:20121129153659+01'00')
/Subject(þÿ Z e z n a n i e o w y s o k o[ c i o s i g n i t e g o d o c h o d u \( p o n i e s i o n e j s t r a t y \) p r z e z p o d a t n i k a p o d a t k u d o c h o d o w e g o o d o s ó b f i z y c z n y c h)
/wariant(17)
/Author(Ministerstwo Finansów)
/CreationDate(D:20120816122649+02'00')
>>
endobj

当前的 iText 5.x 看起来像这样:

16 0 obj
<<
/Creator(Ìû±d\\‘0Ú¼U´N°4@è4÷¤&‚ŸWŠÖsW¦ïôeå¿ê¹@aC<M¹^\t¯p; Um­…‡&U$“)
/Producer(Ìû±d\\‘0Ú¼U´NSH<š¶CìœhMÙg6\(@+C“rxó3% èúáž#„~îí$´Ñ\rEÿ\){â®ø×ÇMõÒ”/k«'T“…Ô»6D±Šàûèq}=_]YùèM»Lõ‡!õØûÚ©'é+t#Väò¿ÃSVõñý)
/schemat(Ìû±d\\‘0Ú¼U´N„hÙÚújñÂð\)÷Lsg—¥oÏ0<Á@õ5/•X6úJ!–nÈÒvU‚nð)
/Title(Ìû±d\\‘0Ú¼U´NÅÎéÈ€Ã3 ÅpC„¡H)
/wersja_schemy(Ìû±d\\‘0Ú¼U´NAÞ&·4ul‰¡b‘Œó)
/ModDate(Ìû±d\\‘0Ú¼U´NÏbZk£&"!õH³Î¨l\f6\)¥+¥ûcoûÒ\rÕ8˜Í)
/Subject(Ìû±d\\‘0Ú¼U´N:¡Ž”"ؘí¹~KŸpS†ÑŽäQ%”ýãtõÌt\t‚Ý3t\r9Ñ}#M …O¦\nqWóm: íÑ;A“GÝ.mÐÔéÔ]Ùn“Ƽä°'0%±@ \rÞªeé¶T<“¾./ýÂA"ÆRvoo€‚—Ý{?Ü“Nö\r¼¨]üv•¯y©Tˆ aŸ?"y°à¡ÀaÂÛ”ÄR’rèŽêKD•M6{Ä£t´é¾ù|%¬ƒÒˆM….’Ëð½˜B‡lƳ¤+¦Š¹ôTÝ^å¤=‹BAO‚Ø€°ú̱æj9_!#÷h‡5)
/wariant(Ìû±d\\‘0Ú¼U´N6©BÛâ`Ì¡k‹Ô <½`)
/Author(Ìû±d\\‘0Ú¼U´NŒ’×,ïZ2ä¡Åöw윭?bjÃô‚w|éUÆб)
/CreationDate(Ìû±d\\‘0Ú¼U´N'·¬‡jHÎâÃë&šZ¦Ñ.U©ü«s¾½Ý;2¸Q)
>>
endobj

因此,iText 2.1.7 并未对更新后的信息字典的条目进行加密,并且 Adob​​e Acrobat 在尝试解密时出现了问题。

编辑

不幸的是,即使在分隔未加密的信息字典之后,在尝试加载文件时仍然会出现 118。因此,再次查看这些文件,还有另一个区别:iText 2.1.7 创建的版本包含一个微小的对象流,而其他版本则不包含。当尝试读取该对象流时,iText 本身会出错......

关于java - iText 2.1.7 中的 PdfStamper 是否存在错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13626698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com