当我第一次开始工作时,并没有立即明确需要多次处理 pdf,所以也许这对你有一些帮助。
在下面的方法中,我们创建一个 pdf,将其渲染为 a byte[]
,加载它以进行后期处理,再次渲染 pdf 并返回结果。
您的问题的其余部分涉及byte[]
进入和退出 a varbinary[max]
,将 a 保存byte[]
到文件并将其读回,您可以很容易地用谷歌搜索。
public byte[] PdfGeneratorAndPostProcessor()
{
byte[] newPdf;
using (var pdf = new MemoryStream())
using (var doc = new Document(iTextSharp.text.PageSize.A4))
using (PdfWriter.GetInstance(doc, pdf))
{
doc.Open();
// do stuff to the newly created doc...
doc.Close();
newPdf = pdf.GetBuffer();
}
byte[] postProcessedPdf;
var reader = new PdfReader(newPdf);
using (var pdf = new MemoryStream())
using (var stamper = new PdfStamper(reader, pdf))
{
var pageCount = reader.NumberOfPages;
for (var i = 1; i <= pageCount; i++)
{
// do something on each page of the existing pdf
}
stamper.Close();
postProcessedPdf = pdf.GetBuffer();
}
reader.Close();
return postProcessedPdf;
}