当前位置: 首页 > 知识库问答 >
问题:

附件损坏签名

翟缪文
2023-03-14

我有PDF文档。

1)Adobe reader可以很好地读取文档。

2)我签署文件(使用pdfbox),一切正常

第二:当我尝试关闭文档(我的意思是关闭adobe reader)时,adobe reader会告诉我:关闭之前,是否要保存对“原始[with-attachment][signed]”的更改?我没发现你发生这种事。

下面是上传到google doc的测试文件

共有1个答案

阮阳曦
2023-03-14

问题的原因是,签名原始[with-attachment].pdf的过程创建了带有交叉引用流的增量更新,而源文件具有交叉引用表。添加增量更新时,新的交叉引用必须与旧的交叉引用具有相同的类型。

这个错误很可能是由于附加attach.txt进程也有点不正常:它将文件存储为带有交叉引用表的PDF,尽管原始文件是带有交叉引用流的文件,但同时在新文件的尾部保留了以前的交叉引用字典中的一些元素。这些遗留的元素(不属于拖车字典)可能会使您的签名过程认为源代码已经使用了交叉引用流。

由于禁止在增量更新之间更改交叉引用样式,因此Adobe Reader会尝试在内存中修复文档。这样的修复尝试常常会导致意想不到的结果:关闭前是否要保存对“原始[with-attachment][signed]”的更改?警告。

在固定PDF的过程中,整个PDF被重新排列。这显然会导致签名字节范围无效。

%PDF-1.3
%âãÏÓ
11 0 obj
<</Linearized 1/L 48987/O 13/E 37674/N 3/T 48682/H [ 480 178]>>
endobj
25 0 obj
<</DecodeParms<</Columns 4/Predictor 12>>/Filter/FlateDecode/ID[<321A6D6DCD0785E8E35BD4B13115140A><59793561FB914D408936FC170763541A>]/Index[11 22]/Info 10 0 R/Length 77/Prev 48683/Root 12 0 R/Size 33/Type/XRef/W[1 2 1]>>stream
hÞbbd``b`jŒ â`–,õ@‚µÄb‰í±@Ä"Q{$¬rÄ‚MLŒ³€,F¬ÄÆK¿ Mi
endstream
endobj
startxref
0
%%EOF

32 0 obj 

[.........]

endobj
8 0 obj
<</DecodeParms<</Columns 3/Predictor 12>>/Filter/FlateDecode/ID[<321A6D6DCD0785E8E35BD4B13115140A><59793561FB914D408936FC170763541A>]/Info 10 0 R/Length 50/Root 12 0 R/Size 11/Type/XRef/W[1 2 0]>>stream
hÞbb```bœ¬ÅÄÀ°“‰A\š‰H³Îbbà)²'ñ5&F§Û@yF€  xi 
endstream
endobj
startxref
116
%%EOF
%PDF-1.3
%öäüß
1 0 obj

[.........]

endobj
xref
0 33 
0000000000 65535 f
0000000015 00000 n
[...]
0000049667 00000 n
0000049737 00000 n
trailer
<<
/DecodeParms <<
/Columns 4
/Predictor 12
>>
/Filter /FlateDecode
/ID [<321A6D6DCD0785E8E35BD4B13115140A> <59793561FB914D408936FC170763541A>]
/Info 5 0 R
/Length 77
/Root 1 0 R
/Size 33
/Type /XRef
/W [1 2 1]
/Index [11 22]
>>
startxref
49755
%%EOF 
%PDF-1.3
%öäüß
1 0 obj

[....as above....]

startxref
49755
%%EOF 

1 0 obj

[.........]

endobj
37 0 obj
<<
/ID [<DC60F4419C05967B81D7F64090027D7F> <DC60F4419C05967B81D7F64090027D7F>]
/Info 5 0 R
/Root 1 0 R
/Prev 49755
/Type /XRef
/Size 38
/Filter /FlateDecode
/Index [1 1 6 1 33 4]
/W [1 3 0]
/Length 31
>>
stream
xœcd8ú‘1&ˆ‘áØ.F†ã¾ŒŒ±ù@| VÚ
endstream
endobj
startxref
89569
%%EOF 

ID管理:添加附件的过程会保留整个ID。您的签名过程将删除PDF的整个原始ID,并用一个新ID替换它:

>

  • 原始.pdf

    /ID[<321A6D6DCD0785E8E35BD4B13115140A><59793561FB914D408936FC170763541A>]
    
    /ID [<321A6D6DCD0785E8E35BD4B13115140A> <59793561FB914D408936FC170763541A>] 
    
    /ID [<A9F7159B1E5D8285A68475689B750214> <A9F7159B1E5D8285A68475689B750214>] 
    
    /ID [<DC60F4419C05967B81D7F64090027D7F> <DC60F4419C05967B81D7F64090027D7F>] 
    

  •  类似资料:
    • 我创建了代码,将图像添加到现有的pdf文档中,然后对其进行签名,全部使用PDFBox(参见下面的代码)。 代码很好地添加了图像和签名。但在一些文档中,Acrobat Reader抱怨“签名字节范围无效”。 问题似乎与本题描述的问题相同。这个问题的答案更详细地描述了这个问题:问题是我的代码在文档中留下了交叉引用类型的混合(流和表)。事实上,有些文档甚至不会打开,因为这样会产生问题。 我的问题是:我如

    • 问题内容: 我使用Eclipse在Windows 7中创建了一个jar文件。当我尝试打开jar文件时,它说jar文件无效或损坏。谁能建议我为什么jar文件无效? 问题答案: 当您在Windows资源管理器中双击一个JAR文件时,会发生这种情况,但是JAR本身实际上不是 可执行的 JAR。真正的可执行JAR至少应具有带有方法的类,并在中引用它。 在Eclispe中,您需要将项目导出为 Runnabl

    • 我正在使用apache poi,我创建了一个HSSF工作簿,并尝试打开一个xlsx文件。但当我用excel打开时,它显示文件已损坏。这是我的密码。

    • 有什么想法可以解决我的问题吗? 谢谢,提前。