iText PdfStamper 增加签名 pdf 的大小
iText PdfStamper increase size of a signed pdf
为什么每次使用 PdfStamper 都会增加我签名的 pdf 的大小?
这是我的代码:
private static void test(String src, String pwd, String dest) throws Exception {
byte[] pwdByte = pwd != null ? pwd.getBytes() : null;
PdfReader r = null;
PdfStamper stp = null;
FileOutputStream fos = null;
try {
r = new PdfReader(src, pwdByte);
fos = new FileOutputStream(dest);
stp = new PdfStamper(r, fos, '[=10=]', true);
} finally {
stp.close();
fos.close();
r.close();
}
}
如果我调用测试,生成的 pdf 会根据签名信息增加大小:
我的初始 pdf 有一个 LTV 标志,但我需要添加一个时间戳。我需要添加 Ltv() 一些 pdf,然后再添加 LtvNoTs(),因为它是不同的 TSA。这使得在追加模式下调用两次 PdfReader,每次我这样做都会增加我的 pdf 190kb aprox。这意味着增加 380kb。
http://developers.itextpdf.com/question/how-enable-ltv-timestamp-signature
我已经测试了用带有简单 sing 的 pdf 调用上面的测试方法,每次我在生成的 pdf 上调用 test() 时,每次都会增加 3,5kb(我认为由于小签名信息).
即使我没有添加任何更改,为什么 pdfstamper 会增加我已签名的 pdf 大小?我怎样才能避免它? 390kb 这是个问题,因为我需要放弃数千个 pdf 并存储它们。
我正在使用 itext 5.5.9
提前致谢!
这是一个奇怪的问题,因为它表明您不了解数字签名的概念。当您签署 PDF 时,您希望确保签名在有人更改单个字节时立即中断。每次签署文档时,您 保护 文档先前修订的字节,方法是添加一个签名字典,其内容至少包含您要保护的字节的签名哈希.
请参见下图,其中显示了 PDF 签名三次的架构:
假设您想要添加第四个签名,并且您希望生成的文件具有与以前相同的大小,您将不得不更改现有文档中的一些字节。这至少会破坏现有签名之一。
你提到 LTV。 LTV 意味着添加文档安全存储 (DSS) 和时间戳签名。同样的规则适用:你必须添加额外的字节,因为一旦你改变现有的字节,你就会破坏现有的签名:
每次最新时间戳签名的证书过期,都要重复同样的过程:
文件总大小会一直增加。
为什么每次使用 PdfStamper 都会增加我签名的 pdf 的大小?
这是我的代码:
private static void test(String src, String pwd, String dest) throws Exception {
byte[] pwdByte = pwd != null ? pwd.getBytes() : null;
PdfReader r = null;
PdfStamper stp = null;
FileOutputStream fos = null;
try {
r = new PdfReader(src, pwdByte);
fos = new FileOutputStream(dest);
stp = new PdfStamper(r, fos, '[=10=]', true);
} finally {
stp.close();
fos.close();
r.close();
}
}
如果我调用测试,生成的 pdf 会根据签名信息增加大小:
我的初始 pdf 有一个 LTV 标志,但我需要添加一个时间戳。我需要添加 Ltv() 一些 pdf,然后再添加 LtvNoTs(),因为它是不同的 TSA。这使得在追加模式下调用两次 PdfReader,每次我这样做都会增加我的 pdf 190kb aprox。这意味着增加 380kb。 http://developers.itextpdf.com/question/how-enable-ltv-timestamp-signature
我已经测试了用带有简单 sing 的 pdf 调用上面的测试方法,每次我在生成的 pdf 上调用 test() 时,每次都会增加 3,5kb(我认为由于小签名信息).
即使我没有添加任何更改,为什么 pdfstamper 会增加我已签名的 pdf 大小?我怎样才能避免它? 390kb 这是个问题,因为我需要放弃数千个 pdf 并存储它们。
我正在使用 itext 5.5.9
提前致谢!
这是一个奇怪的问题,因为它表明您不了解数字签名的概念。当您签署 PDF 时,您希望确保签名在有人更改单个字节时立即中断。每次签署文档时,您 保护 文档先前修订的字节,方法是添加一个签名字典,其内容至少包含您要保护的字节的签名哈希.
请参见下图,其中显示了 PDF 签名三次的架构:
假设您想要添加第四个签名,并且您希望生成的文件具有与以前相同的大小,您将不得不更改现有文档中的一些字节。这至少会破坏现有签名之一。
你提到 LTV。 LTV 意味着添加文档安全存储 (DSS) 和时间戳签名。同样的规则适用:你必须添加额外的字节,因为一旦你改变现有的字节,你就会破坏现有的签名:
每次最新时间戳签名的证书过期,都要重复同样的过程:
文件总大小会一直增加。