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

时间:2013-06-18 20:55:33

标签: c# pdf itextsharp

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

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

如果有人拥有非常有用的代码段示例。谢谢!

1 个答案:

答案 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;
}