C#實現PDF轉圖片的方法詳解

一、PDF轉圖片的作用

PDF作為一種可移植性強、不受操作系統和軟硬件的限制而有廣泛應用的文檔格式,然而與之不同的是,圖片在互聯網普及的大環境下,能夠被直接顯示和瀏覽,因此,以PDF為載體時,常常需要將其轉換為圖片,使其能夠被HTML加工並在網頁上展示出來。

二、PDF轉圖片的實現方法

PDF轉圖片在網絡編程中也是一個非常常見的需求,實現PDF轉圖片需要藉助第三方工具庫,在C#中推薦使用Ghostscript和iTextSharp。下面我們將分別介紹兩種方法。

三、使用Ghostscript實現PDF轉圖片

Ghostscript是一款開源的,支持多操作系統(Windows、Linux、Mac)的PostScript和PDF解釋器,具有非常好的PDF轉圖片的功能,經過個人測試,Ghostscirpt的轉換質量比iTextSharp更好,同時也較穩定。利用Ghostscript進行PDF轉圖片的代碼如下:

using System.Diagnostics;
using System.IO;

public bool PdfConvertToImage(string sourcePdfPath,int pageIndex,string destImagePath)
{
    string exePath = @"C:/Program Files/gs/gs9.26/bin/gswin64c.exe";
    string para = "-dNOPAUSE -sDEVICE=jpeg -r200 -dFirstPage="+pageIndex+" -dLastPage="+pageIndex+" -o "+destImagePath+" "+sourcePdfPath;
    Process p = new Process();
    p.StartInfo.FileName = exePath;
    p.StartInfo.Arguments = para;
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.CreateNoWindow = true;
    p.Start();
    string output = p.StandardOutput.ReadToEnd();
    p.WaitForExit();
    return true;
}

參數解讀:

  • -dNOPAUSE:設置不終止打印並在輸出前保持進程持續運行的模式,以便通過繼續輸入數據來獲得多頁輸出。
  • -sDEVICE=jpeg:指定輸出設備為jpeg格式。
  • -r200:設置輸出圖像分辨率為200dpi。
  • -dFirstPage、-dLastPage:指定轉換的頁數範圍。
  • -o:指定輸出圖片的路徑。

四、使用iTextSharp實現PDF轉圖片

iTextSharp是一個非常著名的PDF處理庫,iTextSharp提供了PDF到圖片的實現方式,但是它的轉換質量比較一般,需要處理生成的圖片不清晰的問題,同時轉換速度較慢。下面是利用iTextSharp進行PDF轉圖片的代碼:

using System.Drawing;
using iTextSharp.text;
using iTextSharp.text.pdf;

public bool PdfConvertToImage(string sourcePdfPath, int pageIndex, string destImagePath)
{
    using (PdfReader reader = new PdfReader(sourcePdfPath))
    {
        Rectangle rect = reader.GetPageSize(pageIndex);
        Document document = new Document(rect, 0, 0, 0, 0);
        PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(destImagePath, FileMode.Create));
        document.Open();
        PdfContentByte cb = writer.DirectContent;
        PdfImportedPage page = writer.GetImportedPage(reader, pageIndex);
        cb.AddTemplate(page, 1, 1);
        document.Close();
    }
    return true;
}

iTextSharp實現PDF轉圖片的原理是解析PDF文件內容,然後將PDF文件的內容傳遞給PDF轉圖片API進行處理。

五、總結

PDF轉圖片的實現需要藉助第三方工具庫,通常推薦使用Ghostscript和iTextSharp兩種方法,Ghostscript的轉換質量比較好,但需要安裝Ghostscript環境,iTextSharp實現方式較為簡單,但轉換質量較一般。根據實際需求可以選擇最適合的轉換方法。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/180027.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-22 05:10
下一篇 2024-11-22 05:10

相關推薦

  • ArcGIS更改標註位置為中心的方法

    本篇文章將從多個方面詳細闡述如何在ArcGIS中更改標註位置為中心。讓我們一步步來看。 一、禁止標註智能調整 在ArcMap中設置標註智能調整可以自動將標註位置調整到最佳顯示位置。…

    編程 2025-04-29
  • 解決.net 6.0運行閃退的方法

    如果你正在使用.net 6.0開發應用程序,可能會遇到程序閃退的情況。這篇文章將從多個方面為你解決這個問題。 一、代碼問題 代碼問題是導致.net 6.0程序閃退的主要原因之一。首…

    編程 2025-04-29
  • Python基礎教程第三版PDF下載

    熟練掌握Python編程語言可以讓你輕鬆地用代碼解決很多問題,Python基礎教程第三版是一本適合初學者的Python教程。本文將從幾個方面詳細介紹Python基礎教程第三版PDF…

    編程 2025-04-29
  • 用Python繪製酷炫圖片

    在本篇文章中,我們將展示如何使用Python繪製酷炫的圖片。 一、安裝Python繪圖庫 在使用Python繪製圖片之前,我們需要先安裝Python繪圖庫。Python有很多繪圖庫…

    編程 2025-04-29
  • Python創建分配內存的方法

    在python中,我們常常需要創建並分配內存來存儲數據。不同的類型和數據結構可能需要不同的方法來分配內存。本文將從多個方面介紹Python創建分配內存的方法,包括列表、元組、字典、…

    編程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一個類的構造函數,在創建對象時被調用。在本篇文章中,我們將從多個方面詳細討論init方法的作用,使用方法以及注意點。 一、定義init方法 在Pyth…

    編程 2025-04-29
  • 使用Vue實現前端AES加密並輸出為十六進制的方法

    在前端開發中,數據傳輸的安全性問題十分重要,其中一種保護數據安全的方式是加密。本文將會介紹如何使用Vue框架實現前端AES加密並將加密結果輸出為十六進制。 一、AES加密介紹 AE…

    編程 2025-04-29
  • 用不同的方法求素數

    素數是指只能被1和自身整除的正整數,如2、3、5、7、11、13等。素數在密碼學、計算機科學、數學、物理等領域都有着廣泛的應用。本文將介紹幾種常見的求素數的方法,包括暴力枚舉法、埃…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • Python學習筆記:去除字符串最後一個字符的方法

    本文將從多個方面詳細闡述如何通過Python去除字符串最後一個字符,包括使用切片、pop()、刪除、替換等方法來實現。 一、字符串切片 在Python中,可以通過字符串切片的方式來…

    編程 2025-04-29

發表回復

登錄後才能評論