2011-03-02 87 views
1

我正在尋找最簡單的方法,使用iTextSharp將當前查看的asp.net網頁導出到PDF文檔 - 它可以是它的截圖或傳遞url來生成文檔。示例代碼將不勝感激。提前謝謝了!ASP.NET網頁到PDF

+2

爲什麼要使用iTextSharp執行此操作? iTextSharp無法將ASP.NET頁面轉換爲PDF,也無法將HTML轉換爲PDF。這不是它的意思。它是爲了從頭開始創建PDF文件,你知道,你從一個新的文檔開始,添加文本,圖像等......因此,一種技術可能在於捕獲頁面的屏幕截圖(詢問關於如何做到這一點的另一個問題,這可能會由於重複的數量而關閉),然後使用iTextSharp生成一個PDF,其中包含表示頁面渲染輸出的.jpeg圖像。 – 2011-03-02 19:10:24

回答

0

增加Darin在他的評論中所說的話。

您可以嘗試使用wkhtmltopdf生成PDF文件。它將URL作爲輸入。這是我用於我的SO應用程序so2pdf

0

這不是那麼容易(或者我認爲是這樣),我有同樣的問題,我不得不編寫代碼來生成PDF格式的確切頁面。它取決於頁面和使用的樣式等,所以我創建每個元素的繪圖。

對於一些項目我使用Winnovative HTML to PDF轉換器,但它不是免費的。

1

在過去的項目中,我們使用Supergoo ABCPDF 來做你需要的東西,它工作得很好。您基本上爲它提供一個url,並將HTML頁面處理爲PDF。

缺點是,它是一個授權軟件,其成本與其相關,當同時導出大量大型PDF時,我們遇到了一些性能問題。

希望這會有所幫助!

0

WInnovative網站上有一個示例Convert the Current HTML Page to PDF,它正是這樣做的。將當前查看的asp.net網頁轉換爲PDF文檔的相關C#代碼是:

// Controls if the current HTML page will be rendered to PDF or as a normal page 
bool convertToPdf = false; 

protected void convertToPdfButton_Click(object sender, EventArgs e) 
{ 
    // The current ASP.NET page will be rendered to PDF when its Render method will be called by framework 
    convertToPdf = true; 
} 

protected override void Render(HtmlTextWriter writer) 
{ 
    if (convertToPdf) 
    { 
     // Get the current page HTML string by rendering into a TextWriter object 
     TextWriter outTextWriter = new StringWriter(); 
     HtmlTextWriter outHtmlTextWriter = new HtmlTextWriter(outTextWriter); 
     base.Render(outHtmlTextWriter); 

     // Obtain the current page HTML string 
     string currentPageHtmlString = outTextWriter.ToString(); 

     // Create a HTML to PDF converter object with default settings 
     HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter(); 

     // Set license key received after purchase to use the converter in licensed mode 
     // Leave it not set to use the converter in demo mode 
     htmlToPdfConverter.LicenseKey = "fvDh8eDx4fHg4P/h8eLg/+Dj/+jo6Og="; 

     // Use the current page URL as base URL 
     string baseUrl = HttpContext.Current.Request.Url.AbsoluteUri; 

     // Convert the current page HTML string a PDF document in a memory buffer 
     byte[] outPdfBuffer = htmlToPdfConverter.ConvertHtml(currentPageHtmlString, baseUrl); 

     // Send the PDF as response to browser 

     // Set response content type 
     Response.AddHeader("Content-Type", "application/pdf"); 

     // Instruct the browser to open the PDF file as an attachment or inline 
     Response.AddHeader("Content-Disposition", String.Format("attachment; filename=Convert_Current_Page.pdf; size={0}", outPdfBuffer.Length.ToString())); 

     // Write the PDF document buffer to HTTP response 
     Response.BinaryWrite(outPdfBuffer); 

     // End the HTTP response and stop the current page processing 
     Response.End(); 
    } 
    else 
    { 
     base.Render(writer); 
    } 
}