該頁面可以包含自動翻譯的文字。

將 PDF 轉為影像 in C# and VB.NET

有些情況下您需要將 PDF 轉換為影像。例如,您可能需要從 PDF 建立縮圖,或對某些 PDF 文件執行光學字元辨識(OCR)。

您可以在 C# 與 VB.NET 專案中使用 Docotic.Pdf 程式庫 將 PDF 文件轉換為影像。該程式庫 100% 受管理,且沒有外部相依項。它不會使用 System.Drawing.dll 和 GDI+ 進行 PDF 光柵化。因此,您會在 Windows、Linux、macOS、iOS 和 Android 上得到一致的輸出。

該程式庫可從 NuGet 和我們的網站取得。請在 下載 C# .NET PDF 程式庫 頁面取得該程式庫和免費的限時授權金鑰。

Docotic.Pdf 提供許多 PDF 轉影像選項。而且它也可以 轉譯並列印 PDF 文件。讓我們看看如何使用 Docotic.Pdf 程式庫將 PDF 轉換為影像。

在 C# 與 VB.NET 中將 PDF 轉為影像

將 PDF 頁面儲存為 PNG、JPG 或 TIFF 影像

Docotic.Pdf 程式庫可讓您將 PDF 頁面轉換為 PNG、JPEG 或 TIFF 影像。您可以將結果影像寫入串流或檔案。此 C# 程式片段會將 PDF 頁面儲存為 PNG 影像,背景為白色,解析度為 300x300 dpi:

using BitMiracle.Docotic.Pdf;

using var pdf = new PdfDocument("your_document.pdf");

PdfDrawOptions options = PdfDrawOptions.Create();
options.BackgroundColor = new PdfRgbColor(255, 255, 255);
options.HorizontalResolution = 300;
options.VerticalResolution = 300;

for (int i = 0; i < pdf.PageCount; ++i)
    pdf.Pages[i].Save($"page_{i}.png", options);

您可以透過 PdfDrawOptions.Compression 屬性,指示程式庫改為產生 JPEG 或 TIFF 影像,而不是 PNG。下列程式片段示範如何切換為產生 JPEG 影像:

PdfDrawOptions options = PdfDrawOptions.Create();
options.Compression = ImageCompressionOptions.CreateJpeg();

相關的 C# 與 VB.NET 範例可在 GitHub 上 取得。

將 PDF 文件轉換為多頁 TIFF in .NET

您可以使用 PdfDocument.SaveAsTiff 方法,將整份文件儲存為多頁 TIFF 影像。以下是將 PDF 轉換為 TIFF 的 C# 範例:

using var pdf = new PdfDocument("document.pdf");
PdfDrawOptions options = PdfDrawOptions.Create();
options.BackgroundColor = new PdfRgbColor(255, 255, 255);

pdf.SaveAsTiff("result.tiff", options);

從 GitHub 下載並試用 將 PDF 儲存為多頁 TIFF 範例程式碼。那裡也提供 C# 與 VB.NET 版本。

從 PDF 建立縮圖

借助 Docotic.Pdf 程式庫,您可以從 PDF 頁面產生縮圖。此 C# 範例會從指定 PDF 的第一頁建立 200x200 像素的縮圖,並將縮圖寫入記憶體串流:

using var pdf = new PdfDocument("document.pdf");
PdfDrawOptions options = PdfDrawOptions.CreateFitSize(new PdfSize(200, 200), false);
options.BackgroundColor = new PdfGrayColor(100);

using var stream = new MemoryStream();
pdf.Pages[0].Save(stream, options);

您也可以使用 PdfDrawOptions.CreateFitWidthPdfDrawOptions.CreateFitHeight 方法,產生指定寬度或高度的縮圖影像。

在 .NET 中將 PDF 轉換為雙色調或灰階影像

該程式庫可以將 PDF 文件轉換為雙色調(黑白)TIFF 影像。此範例示範如何在 C# 中從 PDF 文件產生雙色調 TIFF 影像:

using var pdf = new PdfDocument("colored.pdf");
PdfDrawOptions options = PdfDrawOptions.Create();
options.BackgroundColor = new PdfRgbColor(255, 255, 255);
options.Compression = ImageCompressionOptions.CreateTiff().SetBitonal();

pdf.SaveAsTiff("bitonal.tiff", options);

使用 TiffImageCompressionOptions.SetBitonalThreshold 方法時,也可以指定閾值層級。閾值層級定義如何將灰階、RGB 或 CMYK 色彩轉換為黑白。

Docotic.Pdf 也支援將 PDF 轉換為灰階 PNG、JPG 或 TIFF 影像。只要像下列程式片段一樣使用 PngImageCompressionOptions.SetGrayscaleJpegImageCompressionOptions.SetGrayscaleTiffImageCompressionOptions.SetGrayscale 方法之一即可:

PdfDrawOptions options = PdfDrawOptions.Create();
options.Compression = ImageCompressionOptions.CreatePng().SetGrayscale();

縮放 PDF

PdfDrawOptions.CreateZoom 方法可讓您取得具有指定縮放比例的 PDF 頁面影像。此 C# 範例會將 PDF 頁面轉換為 400% 縮放的影像:

using var pdf = new PdfDocument(@"document.pdf");
PdfDrawOptions options = PdfDrawOptions.CreateZoom(400);
pdf.Pages[0].Save("zoomed.png", options);

部分 PDF 轉影像轉譯

您可能只需要將 PDF 頁面的一部分轉換為影像。例如,將大型 PDF 頁面切分為圖塊。或裁剪某些不需要的內容。

此 C# 程式碼會將 PDF 頁面左上角 256x256 點區域的影像儲存下來:

using var pdf = new PdfDocument("large.pdf");
PdfDrawOptions options = PdfDrawOptions.Create();
options.BackgroundColor = new PdfRgbColor(255, 255, 255);

PdfPage page = pdf.Pages[0];
PdfBox cropBoxBefore = page.CropBox;

page.CropBox = new PdfBox(0, cropBoxBefore.Height - 256, 256, cropBoxBefore.Height);
page.Save("part.png", options);

page.CropBox = cropBoxBefore;

圖塊式 PDF 轉影像轉譯

Docotic.Pdf 內建支援將 PDF 分塊轉譯為 TIFF。當您需要以固定的記憶體量處理大型 PDF 頁面時,這種方法很有用。

例如,您的 PDF 文件包含一個大小為 10000x10000 點的頁面。以 300 DPI 解析度將此頁面一般轉換為 RGB 影像,需要超過 1 Gb (= 10000 * 10000 * 3 * 300 / 72.0 bytes) 的記憶體來存放中間未壓縮的 RGB 影像資料。使用 1024x1024 圖塊的分塊轉譯,您可以將未壓縮 RGB 影像資料的記憶體消耗限制在 12 Mb (= 1024 * 1024 * 3 * 300 / 72.0 bytes)。

請注意,圖塊式 PDF 轉影像轉譯比一般轉換慢。對每個圖塊,程式庫都需要處理 PDF 頁面的所有操作,即使其中某些操作不影響目前圖塊。

此 C# 程式片段示範如何使用 512x512 圖塊將 PDF 轉換為影像:

using var pdf = new PdfDocument("large.pdf");
PdfDrawOptions options = PdfDrawOptions.Create();
options.Compression = ImageCompressionOptions.CreateTiff().SetTileSize(512, 512);
options.BackgroundColor = new PdfGrayColor(100);
options.HorizontalResolution = 300;
options.VerticalResolution = 300;

pdf.Pages[0].Save("tiled.tiff", options);

結論

Docotic.Pdf 程式庫 在 .NET 中提供多種 PDF 轉影像選項。您可以將 PDF 頁面轉換為完整大小或縮圖影像,格式包括 PNG、TIFF 和 JPEG。您也可以將 PDF 文件儲存為多頁 TIFF 檔案。該程式庫也可以產生雙色調和灰階影像。

從 GitHub 下載並試用 PDF 轉影像 範例。

如果您對 PDF 轉影像有任何問題,請 聯絡我們