从 String 或 InputStream 创建 PDFReader

Create PDFReader from String or InputStream

下面是我从输入 Stringbyte[] 创建 PDF 的代码 此输入正在使用 iText5。当我在 iText5 中将输入传递给 PdfReader 时,它能够创建 PdfReader 对象。

案例一:

    byte[] bytesDecoded = Base64.decodeBase64(input.getBytes(StandardCharsets.UTF_8));
    InputStream is = IOUtils.toInputStream(bytesDecoded.toString(), StandardCharsets.UTF_8);
    PdfReader reader = new PdfReader(is);

案例二:

PdfReader reader = new PdfReader(IOUtils.toInputStream(input, StandardCharsets.UTF_16));

异常:

 Exception in thread "main" com.itextpdf.io.IOException: PDF header not found.
    at com.itextpdf.io.source.PdfTokenizer.getHeaderOffset(PdfTokenizer.java:223)
    at com.itextpdf.kernel.pdf.PdfReader.getOffsetTokeniser(PdfReader.java:1018)

无法在 iText7

工作

我就是这样做的。分享出来,以后可能有用。

    ByteArrayOutputStream pdfos = new ByteArrayOutputStream();
    byte[] bytesDecoded = Base64.decodeBase64(src.getBytes(StandardCharsets.UTF_8));
    ByteArrayInputStream inStream = new ByteArrayInputStream(bytesDecoded);
    PdfReader reader = new PdfReader(inStream);
    PdfSigner signer = new PdfSigner(reader, pdfos, false);

这是从 Byte[] 或 String 创建 PdfReader 的最简单方法。

byte[] template;

PdfReader templatePdf = new PdfReader(new RandomAccessSourceFactory().CreateSource(new MemoryStream(template).ToArray()),new ReaderProperties());