2013-06-18 67 views
2

我目前正在嘗試使用iTextSharp來執行一些PDF字段映射,但現在的挑戰性部分只是保存修改文件在varbinary[max]列中。然後,我稍後需要閱讀該blob並將其轉換爲pdf,然後將其保存到文件中。使用iTextSharp將PDF保存到SQL Server 2008 Blob,並讀取該Blob以保存到磁盤

我一直都在看代碼示例,但我找不到我正在尋找什麼,並且似乎無法將[從文件讀取到iTextSharp對象]拼湊在一起 - > [do my東西] - > [轉換爲varbinary(max)]管道,也沒有將該blob轉換回可保存的文件。

如果有人有代碼片段的例子,將是非常有益的。謝謝!

回答

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