複数のパスで pdf を処理する必要性は、私が最初に作業を開始したときはすぐには明確ではなかったので、おそらくこれはあなたの助けになるでしょう.
以下のメソッドでは、pdf を作成して にレンダリングし、byte[]
後処理のためにロードして、pdf を再度レンダリングし、結果を返します。
あなたの質問の残りの部分は、byte[]
を に出入りさせ、ファイルvarbinary[max]
に保存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;
}