【问题标题】:Sign PDF document and get the pdf as bytes or stream签署 PDF 文档并将 pdf 作为字节或流获取
【发布时间】:2014-01-26 04:15:36
【问题描述】:

我正在使用 Java 中的 Itext 签署 pdf 文档。

它工作正常,但我可以在不保存文件的情况下签署 pdf 文档吗?

这是部分代码:

 FileOutputStream os = (FileOutputStream) readWriteFiles(2);
        System.out.println("FileOutputStream created");

        if (os == null) {
            System.out.println("Operation canceled by the user. He chose to not overwrite existing file.");
            return;
        }

         PdfStamper stamper = PdfStamper.createSignature(reader, os, '\0', null, true);
       // PdfStamper stamper = PdfStamper.createSignature;

        System.out.println("stamper created");


        /* Creating the appearance */
        PdfSignatureAppearance appearance = stamper.getSignatureAppearance();
        appearance.setReason(reason);
        appearance.setLocation(location);

        /* Creating the signature */
        ExternalDigest digest = new BouncyCastleDigest();

        ExternalSignature signature =
                new PrivateKeySignature(pk, digestAlgorithm, provider);

        System.out.println(signature.toString() + "\n\n\n" + appearance.toString());
        MakeSignature.signDetached(appearance, digest, signature, chain,
                null, null, null, 0, subfilter);

OS 包含输出 pdf 文件的路径。 当我尝试将操作系统设置为 null 时,它没有签名。

我的问题是如何在不保存输出 pdf 文件的情况下签署 pdf 文件?

以及如何将 PDF 作为字节或流获取以便在 javascript 中使用它(它是一个小程序)?

【问题讨论】:

  • 当我尝试将操作系统设置为 null 时,它没有签名 - 好吧,如果你既不提供输出流也不提供临时文件位置(另一个 null在您的通话中),您希望 iText 如何将签名文件返回给您?

标签: java javascript pdf applet itext


【解决方案1】:

根据文档

public static PdfStamper createSignature(PdfReader reader, 输出流操作系统, char pdf版本) 抛出 DocumentException, IO异常

你可以给任何你想要的OutputStream,所以我建议你这样做

ByteArrayOutputStream output = new ByteArrayOutputStream();
PdfStamper stamper = PdfStamper.createSignature(reader, output, '\0', null, true);

然后您可以将输出的内容检索为字节数组 (http://docs.oracle.com/javase/7/docs/api/java/io/ByteArrayOutputStream.html)

【讨论】:

  • 完美!非常感谢。
猜你喜欢
  • 1970-01-01
  • 2016-01-21
  • 2018-01-22
  • 2013-09-25
  • 2020-12-24
  • 2021-08-03
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多