【问题标题】:Use iTextSharp to save a PDF to a SQL Server 2008 Blob, and read that Blob to save to disk使用 iTextSharp 将 PDF 保存到 SQL Server 2008 Blob,并读取该 Blob 以保存到磁盘
【发布时间】:2013-06-18 20:55:33
【问题描述】:

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

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

如果有人有代码 sn-p 示例,那将非常有帮助。谢谢!

【问题讨论】:

    标签: c# pdf itextsharp


    【解决方案1】:

    当我第一次开始处理 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;
    }
    

    【讨论】:

      猜你喜欢
      • 2012-04-21
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 2011-02-13
      • 2014-02-24
      • 1970-01-01
      • 2016-12-31
      • 2010-12-03
      相关资源
      最近更新 更多