使用TuesPechkin將html轉成PDF檔---1(C#)

TuesPechkin是以wkhtmltopdf為基礎的套件

能將HTML輕鬆轉為PDF檔

雖然許多瀏覽器都有提供類似的功能

但透過TuesPechkin可以做更多細節的設定

所以這篇先來介紹簡單的使用方法

 

首先至NuGet安裝以下兩個套件

 

程式碼如下

public class PDFConverter
{      
    /// <summary>
    /// 轉換器
    /// </summary>
    private static IConverter Converter = 
        new ThreadSafeConverter(
            new RemotingToolset<PdfToolset>(
                new WinAnyCPUEmbeddedDeployment(
                    new TempFolderDeployment())));

    /// <summary>
    /// 取得PDF
    /// </summary>
    /// <returns></returns>
    public static byte[] GetPDF(string url)
    {
        //建立欲轉換檔案
        HtmlToPdfDocument document = new HtmlToPdfDocument();

        //設定主體
        ObjectSettings objSettings = new ObjectSettings()
        {
            //目標網頁
            PageUrl = url
        };

        //加入主體設定
        document.Objects.Add(objSettings);

        //執行轉換
        byte[] result = Converter.Convert(document);

        return result;
    }    
}

建立轉換器的部分

可以參考GitHub的TuesPechkin

裡面會講解轉換器各個設定的使用

 

Controller程式碼,這裡使用Google搜尋首頁當範例

//建立檔名
string filename = "test.pdf";

//取得PDF
byte[] pdf = PDFConverter.GetPDF("https://www.google.com.tw/");

//設定標頭
Response.AddHeader("Content-disposition", "attachment; filename=\"" + filename + "" + "\"");
//設定回傳媒體型別(MIME)
Response.ContentType = "application/pdf";
//取得Response的OutputStream
Stream stream = Response.OutputStream;

//寫入OutputStream
for (int i = 0; i < pdf.Length; i++)
{
    stream.WriteByte(pdf[i]);
}

//送出Response
Response.End();

//也可以利用C#的ActionResult回傳
//return File(pdf, "application / pdf", filename);

 

執行結果

基本上只要有網址就可以轉成PDF檔了

下一篇會介紹一些細節的設定