如何 return 来自 iText pdf 转换器的二进制流

how to return binary stream from iText pdf converter

是否可以从 pdfstamper return 二进制流 (byte[ ])?

基本上 objective 是编辑 PDF 文档并替换特定文本。

输入已经在二进制流中 (byte[ ])

我为 PDF 编辑库开发了 C# 环境和 iText。

这是我的一段代码:

PdfReader reader = new PdfReader(Mydoc.FileStream);
PdfDictionary dict = reader.GetPageN(1);
PdfObject pdfObject = dict.GetDirectObject(PdfName.CONTENTS);
if (pdfObject.IsStream())
{
PRStream stream = (PRStream)pdfObject;
byte[] data = PdfReader.GetStreamBytes(stream);
stream.SetData(System.Text.Encoding.ASCII.GetBytes(System.Text.Encoding.ASCII.    GetString(data).Replace("[TextReplacement]", "Hello world")));
}
FileStream outStream = new FileStream(dest, FileMode.Create);
PdfStamper stamper = new PdfStamper(reader, outStream);
reader.Close();

return newPDFinStream // this result should be in stream byte[]

了解 FileStream 需要像 C:\location\new.pdf

这样的输出文件路径

可以不临时保存吗?并直接 return 二进制文件?

当然,只需将其保存到 MemoryStream 即可:

using (MemoryStream ms = new MemoryStream())
{
    // Odd to have a constructor but not use the newly-created object.
    // Smacks of the constructor doing too much.
    var ignored = new PdfStamper(reader, ms);
    return ms.ToArray();
}