如何 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();
}
是否可以从 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();
}