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