2

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

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

如果有人有代码片段示例,那将非常有帮助。谢谢!

4

1 回答 1

2

当我第一次开始工作时,并没有立即明确需要多次处理 pdf,所以也许这对你有一些帮助。

在下面的方法中,我们创建一个 pdf,将其渲染为 a byte[],加载它以进行后期处理,再次渲染 pdf 并返回结果。

您的问题的其余部分涉及byte[]进入和退出 a varbinary[max],将 a 保存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;
}
于 2013-06-18T23:10:47.867 回答