我目前正在尝试使用iTextSharp做一些PDF字段映射,但现在具有挑战性的部分只是将修改后的文件保存在varbinary[max]
列中。然后我稍后需要读取blob并将其转换为pdf并保存到文件中。
我一直在看示例代码,但我找不到我正在寻找的东西,并且似乎无法拼凑[从文件读取到iTextSharp对象]->[做我的东西]->[转换为varbinary(max)
]管道,也不能将blob转换回可保存的文件。
如果有人有代码片段的例子,将是非常有用的。谢谢!
当我第一次开始工作时,在多个通道中处理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;
}