使用iTextSharp将PDF保存到SQL Server 2008 Blob,并读取Blob以保存到磁盘

本文关键字:保存 Blob 读取 磁盘 Server iTextSharp PDF SQL 使用 2008 | 更新日期: 2023-09-27 18:18:52

我目前正在尝试使用iTextSharp做一些PDF字段映射,但现在具有挑战性的部分只是将修改后的文件保存在varbinary[max]列中。然后我稍后需要读取blob并将其转换为pdf并保存到文件中。

我一直在看示例代码,但我找不到我正在寻找的东西,并且似乎无法拼凑[从文件读取到iTextSharp对象]->[做我的东西]->[转换为varbinary(max)]管道,也不能将blob转换回可保存的文件。

如果有人有代码片段的例子,将是非常有用的。谢谢!

使用iTextSharp将PDF保存到SQL Server 2008 Blob,并读取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;
}