跳過到頁腳內容
使用IRONPDF

如何使用C#將圖像轉換為PDF【代碼示例教程】

IronPDF提供了一個簡單且免費的解決方案,通過其ImageToPdf方法在C#中將圖像轉換為PDF,讓開發者可以通過幾行代碼和可自定義的頁面設置來轉換單個或多個圖像。

許多庫允許C#開發者將圖像轉換為PDF。 尋找一個免費且易於使用且性能良好的庫可能具有挑戰性,因為有些是付費的、複雜的或功能有限的。 在這些庫中,IronPDF突顯出來,作為一個免費、高效且易於實現的C#庫。 它附帶全面的文檔和專門的支援。

IronPDF是一個.NET庫,用於在.NET項目中生成、閱讀、編輯和保存PDF文件。 IronPDF提供了HTML-to-PDF功能,支援.NET 5、Core、Standard和Framework,並且完全支援HTML-to-PDF轉換,包括CSS3和JS。 該庫利用Chrome渲染引擎,以確保從各種來源生成的PDF像素級精確。

讓我們看看如何創建一個示範項目來學習將圖像轉換為PDF。 本教程將指導您完成安裝過程,基礎圖像轉換以及處理多個圖像和不同格式的高級功能。

如何創建Visual Studio專案?

要創建一個新專案,請打開Microsoft Visual Studio。 建議使用最新版本的Visual Studio。 創建新專案的步驟可能因不同版本而異,但其餘部分應對所有版本相同。

  1. 點擊創建新專案。
  2. 選擇專案模板,然後選擇這次演示的控制台應用程序模板。 您可以根據需求使用任何模板,包括ASP.NET CoreBlazor應用程序
  3. 點擊下一步。 命名專案(例如,"ImageToPDFConverter")。
  4. 點擊下一步並選擇.NET Framework版本。
  5. 點擊創建按鈕。

新專案將按如下所示創建。 專案結構將包括一個Program.cs文件,我們將在其中編寫圖像轉換代碼。

顯示模板選擇和配置選項的Visual Studio新控制台應用程序專案創建畫面 在Visual Studio中創建一個新的控制台應用程序

應選擇哪個.NET Framework版本?

IronPDF支援廣泛的.NET版本,包括.NET Framework 4.6.2+、.NET Core 3.1+和.NET 5/6/7/8+。 對於新專案,建議使用最新的LTS(長期支援)版本的.NET以獲得最佳性能和安全更新。 該庫也能在WindowsLinuxmacOS平台上流暢運行。

接下來,在此專案中安裝IronPDF NuGet Package以使用其功能。 IronPDF的重要之處在於它並不依賴專有API生成PDF文檔,使其變得不再棘手。HTML到PDF的渲染能從開放標準文檔格式生成像素級精確的PDF:HTML、JS、CSS、JPG、PNG、GIF和SVG。 簡而言之,它利用開發者已擁有的技能。

如何安裝IronPDF NuGet Package?

要安裝NuGet Package,請轉到工具 > NuGet Package Manager > Package Manager Console。 將會出現以下窗口:

顯示NuGet包管理命令行界面的Visual Studio中包管理控制台界面 包管理控制台UI

接下來,在包管理控制台中輸入以下命令:

Install-Package IronPdf

按Enter鍵。 安裝過程將下載IronPDF及其依賴項,包括必要的Chrome渲染引擎組件

顯示成功安裝IronPDF包與版本信息和依賴項的包管理控制台 在包管理控制台中安裝IronPdf包

有哪些替代安裝方法?

您還可以通過以下方式安裝IronPDF:

  • NuGet Package Manager UI:右鍵單擊您的專案,選擇"管理NuGet包",搜尋"IronPdf",然後點擊安裝
  • Package Reference:將<PackageReference Include="IronPdf" Version="*" />添加到您的.csproj文件
  • Direct Download:從IronPDF網站下載DLL並手動引用
  • Command Line:在終端中使用dotnet add package IronPdf

對於Azure部署,您可能需要其他配置。 同樣,Docker環境需要特定的設置步驟。

如何將圖像文件轉換為PDF文件?

下一步將展示如何將以下圖像轉換為PDF。 IronPDF透過其ImageToPdf轉換功能使此過程變得簡單明瞭。

支援哪些圖像格式?

IronPDF支持多種圖像格式的PDF轉換:

  • JPEG/JPG:最常用的照片格式
  • PNG:適用於具有透明度的圖像
  • GIF:包括動畫GIF(使用第一幀)
  • BMP:Windows位圖格式
  • TIFF:包括多頁TIFF文件
  • SVG:可縮放矢量圖形
  • WebP:現代網頁圖像格式

展示一隻多彩鳥站在樹枝上的樣本鳥類圖像,展示圖像轉換為PDF的圖像品質 示例圖像

要使用該庫,請在program.cs文件中引用IronPDF程式庫。將以下代碼片段寫在文件頂部:

using IronPdf;
using IronPdf.Imaging;
using System.Linq;
using IronPdf;
using IronPdf.Imaging;
using System.Linq;
$vbLabelText   $csharpLabel

接下來,將以下代碼寫入主函數內。 這將把JPG文件轉換為PDF文件:

public static void Main(string[] args)
{
    // Convert a single image to the PDF document
    PdfDocument doc = ImageToPdfConverter.ImageToPdf(@"D:\Iron Software\ImageToPDF\bird.jpg", IronPdf.Imaging.ImageBehavior.CropPage);

    // Optional: Set document properties
    doc.MetaData.Author = "IronPDF Tutorial";
    doc.MetaData.Title = "Image to PDF Conversion";
    doc.MetaData.Subject = "Converting JPG to PDF";

    // Save the resulting PDF to the specified path
    doc.SaveAs(@"D:\Iron Software\ImageToPDF\bird.pdf");

    Console.WriteLine("PDF created successfully!");
}
public static void Main(string[] args)
{
    // Convert a single image to the PDF document
    PdfDocument doc = ImageToPdfConverter.ImageToPdf(@"D:\Iron Software\ImageToPDF\bird.jpg", IronPdf.Imaging.ImageBehavior.CropPage);

    // Optional: Set document properties
    doc.MetaData.Author = "IronPDF Tutorial";
    doc.MetaData.Title = "Image to PDF Conversion";
    doc.MetaData.Subject = "Converting JPG to PDF";

    // Save the resulting PDF to the specified path
    doc.SaveAs(@"D:\Iron Software\ImageToPDF\bird.pdf");

    Console.WriteLine("PDF created successfully!");
}
$vbLabelText   $csharpLabel

ImageBehavior如何影響輸出?

在上述代碼範例中,IronPDF提供的ImageToPdfConverter類用於圖像轉換。 可以使用ImageToPdf方法從圖像創建PDF文件。 它接受圖像文件和System.Drawing對象作為輸入。

靜態方法ImageToPdf將單一圖像文件轉換為尺寸匹配的相同PDF文件。 它接受兩個參數:圖像路徑和圖像行為(圖像將如何顯示在紙上)。 ImageBehavior枚舉提供了幾種選擇:

  • CropPage:將PDF頁面大小設置為與圖像尺寸匹配
  • CenteredOnPage:將圖像居中於頁面上而無需調整大小
  • FitToPage:將圖像縮放以適應頁邊距
  • FitToPageAndMaintainAspectRatio:縮放並保留縱橫比

Imaging.ImageBehavior.CropPage將設定紙張大小等於圖像大小。默認頁面大小為A4。您可以通過以下代碼行設置它:

ImageToPdfConverter.PaperSize = IronPdf.Rendering.PdfPaperSize.Letter;
ImageToPdfConverter.PaperSize = IronPdf.Rendering.PdfPaperSize.Letter;
$vbLabelText   $csharpLabel

您還可以根據特定需求設置自定義頁面尺寸

// Set custom page size in millimeters
ImageToPdfConverter.PaperSize = new IronPdf.Rendering.PdfPaperSize(210, 297);
// Set custom page size in millimeters
ImageToPdfConverter.PaperSize = new IronPdf.Rendering.PdfPaperSize(210, 297);
$vbLabelText   $csharpLabel

有哪些紙張尺寸選項可用?

提供了多個頁面大小選項,您可以根據需求設定。 IronPDF支持所有標準紙張大小:

  • A系列:A0、A1、A2、A3、A4(默認)、A5、A6、A7、A8、A9、A10
  • B系列:B0到B10
  • 美國尺寸:Letter、Legal、Ledger、Tabloid、Executive
  • 其他:Foolscap、Crown、Demy、Royal及更多

您還可以配置頁面方向(豎向或橫向)和自定義邊距以符合您的PDF。

如何將多張圖像轉換為PDF文件?

以下範例將把JPG圖像轉換為新文檔。 這對於創建相冊、目錄或合併掃描文檔特別有用:

public static void Main(string[] args)
{
    // Enumerate and filter JPG files from the specified directory
    var imageFiles = System.IO.Directory.EnumerateFiles(@"D:\Iron Software\ImageToPDF\")
                                        .Where(f => f.EndsWith(".jpg") || f.EndsWith(".jpeg"));

    // Sort files alphabetically (optional)
    var sortedImageFiles = imageFiles.OrderBy(f => f);

    // Convert the images to a PDF document
    PdfDocument doc = ImageToPdfConverter.ImageToPdf(sortedImageFiles);

    // Add page numbers to each page
    for (int i = 0; i < doc.PageCount; i++)
    {
        doc.AddTextFooter($"Page {i + 1} of {doc.PageCount}", 
                         FontFamily.Arial, 
                         fontSize: 10,
                         y: 25);
    }

    // Save the combined PDF
    doc.SaveAs(@"D:\Iron Software\ImageToPDF\JpgToPDF.pdf");

    Console.WriteLine($"Combined {doc.PageCount} images into a single PDF!");
}
public static void Main(string[] args)
{
    // Enumerate and filter JPG files from the specified directory
    var imageFiles = System.IO.Directory.EnumerateFiles(@"D:\Iron Software\ImageToPDF\")
                                        .Where(f => f.EndsWith(".jpg") || f.EndsWith(".jpeg"));

    // Sort files alphabetically (optional)
    var sortedImageFiles = imageFiles.OrderBy(f => f);

    // Convert the images to a PDF document
    PdfDocument doc = ImageToPdfConverter.ImageToPdf(sortedImageFiles);

    // Add page numbers to each page
    for (int i = 0; i < doc.PageCount; i++)
    {
        doc.AddTextFooter($"Page {i + 1} of {doc.PageCount}", 
                         FontFamily.Arial, 
                         fontSize: 10,
                         y: 25);
    }

    // Save the combined PDF
    doc.SaveAs(@"D:\Iron Software\ImageToPDF\JpgToPDF.pdf");

    Console.WriteLine($"Combined {doc.PageCount} images into a single PDF!");
}
$vbLabelText   $csharpLabel

如何篩選不同的圖像格式?

在上述代碼中,System.IO.Directory.EnumerateFiles檢索指定文件夾中的所有可用文件。 imageFiles集合中。 如果您有PNG或其他圖像格式,您可以只需將其添加到Where查詢中:

// Filter multiple image formats
var imageFiles = System.IO.Directory.EnumerateFiles(@"D:\Iron Software\ImageToPDF\")
    .Where(f => f.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase) || 
                f.EndsWith(".jpeg", StringComparison.OrdinalIgnoreCase) ||
                f.EndsWith(".png", StringComparison.OrdinalIgnoreCase) ||
                f.EndsWith(".bmp", StringComparison.OrdinalIgnoreCase) ||
                f.EndsWith(".gif", StringComparison.OrdinalIgnoreCase) ||
                f.EndsWith(".tiff", StringComparison.OrdinalIgnoreCase));
// Filter multiple image formats
var imageFiles = System.IO.Directory.EnumerateFiles(@"D:\Iron Software\ImageToPDF\")
    .Where(f => f.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase) || 
                f.EndsWith(".jpeg", StringComparison.OrdinalIgnoreCase) ||
                f.EndsWith(".png", StringComparison.OrdinalIgnoreCase) ||
                f.EndsWith(".bmp", StringComparison.OrdinalIgnoreCase) ||
                f.EndsWith(".gif", StringComparison.OrdinalIgnoreCase) ||
                f.EndsWith(".tiff", StringComparison.OrdinalIgnoreCase));
$vbLabelText   $csharpLabel

您還可以使用包含擴展名的陣列更簡潔的方法:

string[] imageExtensions = { ".jpg", ".jpeg", ".png", ".bmp", ".gif", ".tiff" };
var imageFiles = System.IO.Directory.EnumerateFiles(@"D:\Iron Software\ImageToPDF\")
    .Where(f => imageExtensions.Any(ext => f.EndsWith(ext, StringComparison.OrdinalIgnoreCase)));
string[] imageExtensions = { ".jpg", ".jpeg", ".png", ".bmp", ".gif", ".tiff" };
var imageFiles = System.IO.Directory.EnumerateFiles(@"D:\Iron Software\ImageToPDF\")
    .Where(f => imageExtensions.Any(ext => f.EndsWith(ext, StringComparison.OrdinalIgnoreCase)));
$vbLabelText   $csharpLabel

圖像在PDF中會按照何種順序顯示?

默認情況下,圖像會按照文件系統返回的順序顯示,可能不是按字母排序的。 要控制順序,您可以排序文件:

  • 按字母順序imageFiles.OrderBy(f => f)
  • 按創建日期imageFiles.OrderBy(f => new FileInfo(f).CreationTime)
  • 按文件大小imageFiles.OrderBy(f => new FileInfo(f).Length)
  • 自定義順序:使用自定義比較函數

下一行將獲取所有圖像並將它們合併成一個PDF文件。 每個圖像在PDF中是一個單獨的頁面。

如何打印PDF文件?

以下代碼段將使用IronPDF的打印功能打印文檔:

// Print using default printer
doc.Print();

// Print silently (without print dialog)
doc.Print(showPreview: false);

// Print to a specific printer
var printerName = "Microsoft Print to PDF";
doc.Print(printerName);
// Print using default printer
doc.Print();

// Print silently (without print dialog)
doc.Print(showPreview: false);

// Print to a specific printer
var printerName = "Microsoft Print to PDF";
doc.Print(printerName);
$vbLabelText   $csharpLabel

我可以指定打印機設置嗎?

Print方法將使用默認打印機打印文檔。 它還提供了更改打印機名稱和其他設置的選項。 高級打印選項:

// Advanced printing with settings
using System.Drawing.Printing;

var printDocument = doc.GetPrintDocument();
printDocument.PrinterSettings.PrinterName = "Your Printer Name";
printDocument.PrinterSettings.Copies = 2;
printDocument.PrinterSettings.Collate = true;
printDocument.PrinterSettings.PrintRange = PrintRange.SomePages;
printDocument.PrinterSettings.FromPage = 1;
printDocument.PrinterSettings.ToPage = 3;

printDocument.Print();
// Advanced printing with settings
using System.Drawing.Printing;

var printDocument = doc.GetPrintDocument();
printDocument.PrinterSettings.PrinterName = "Your Printer Name";
printDocument.PrinterSettings.Copies = 2;
printDocument.PrinterSettings.Collate = true;
printDocument.PrinterSettings.PrintRange = PrintRange.SomePages;
printDocument.PrinterSettings.FromPage = 1;
printDocument.PrinterSettings.ToPage = 3;

printDocument.Print();
$vbLabelText   $csharpLabel

有關打印文檔的更多細節,請訪問這個PDF打印範例。 您還可以為企業環境探索網路打印選項

有哪些關鍵要點值得注意?

本教程展示了如何通過代碼範例將圖像轉換為PDF文件的一種非常簡單的方法,無論是將單個圖像轉換為PDF還是將多個圖像合併為單個PDF文件。此外,還解釋了如何使用一行代碼打印文檔。

涵蓋的關鍵點:

  • 透過NuGet Package Manager安裝IronPDF
  • 自定義行為將單一圖像轉換為PDF
  • 批量將多個圖像轉換為一個PDF
  • 控制頁面大小、方向和邊距
  • 向PDF添加元數據和頁面編號
  • 程式化打印PDF,具有選項

此外,IronPDF的一些重要功能還包括:

我可以在哪裡學習更多關於IronPDF的知識?

IronPDF提供了許多實用功能。 探索這些資源:

針對特定的使用案例,請探索:

IronPDF的費用是多少?

IronPDF是Iron Software套件的一部分。 Iron Suite包含其他實用產品,如用於Excel操作的IronXL、用於條碼生成的IronBarcode、用於識別文本的IronOCR以及用於網頁數據提取的IronWebscraper。 購買完整的Iron Suite可以節省高達250%的成本,因為您現在可以以兩個產品的價格獲得所有五個產品。 請訪問授權詳情頁面以獲取更多信息。

IronPDF提供:

  • 免費開發授權以進行測試
  • 以$749起的專業授權
  • 免版稅再分發選項
  • 可用的SaaS和OEM授權
  • 30天退款保證
  • 一年免費支援和更新

免費試用IronPDF 30天,請嘗試試用授權,或為您的團隊探尋授權選擇

常見問題解答

如何在 C# 中將圖像轉換為 PDF?

您可以使用 IronPDF 的 ImageToPdf 方法在 C# 中將圖像轉換為 PDF。此方法允許您指定圖像路徑和所需的 PDF 輸出設置。

可以將多個圖像轉換為單個 PDF 文件嗎?

是的,IronPDF 可以使用 ImageToPdf 方法將多個圖像轉換為單個 PDF 文件,您需要提供一組圖像文件。

哪些圖像格式與轉換為 PDF 兼容?

IronPDF 支持將各種圖像格式(如 JPG、PNG、GIF 和 SVG)轉換為 PDF 文檔。

如何在將圖像轉換為 PDF 時設置頁面大小?

要在轉換過程中設置頁面大小,請使用 ImageToPdfConverter 類中的 PaperSize 屬性選擇標準尺寸,如信紙或 A4。

可以打印使用 IronPDF 創建的 PDF 文檔嗎?

是的,IronPDF 包括 PdfDocument 類中的 Print 方法,允許您使用默認或指定的打印機設置打印 PDF 文檔。

IronPDF 提供哪些附加功能?

IronPDF 提供了其他功能,如從 URL 生成 PDF、加密和解密 PDF、合併 PDF 文件,以及創建和編輯 PDF 表單。

如何在 Visual Studio 項目中安裝 IronPDF?

要在 Visual Studio 項目中安裝 IronPDF,請打開包管理器控制台並運行命令 Install-Package IronPDF

使用 IronPDF 進行 PDF 生成有什麼優勢?

IronPDF 提供簡單、高效的 API 生成 PDF,無需專有 API,同時提供專業支持以處理各類 PDF 任務。

IronPDF 是否兼容 .NET 10,我如何在 .NET 10 項目中將其用於圖片到 PDF 的轉換?

是的 — IronPDF 完全兼容 .NET 10 並支援在 .NET 10 項目中將圖像轉換為 PDF 開箱即用。要使用它,在您的 .NET 10 項目中安裝 IronPdf NuGet 套件,然後調用類似 ImageToPdfConverter.ImageToPdf("path/to/image.png") 的方法來轉換單個圖像,或者傳入圖像路徑的 IEnumerable 以轉換多個圖像。您還可以透過 ChromePdfRenderOptions 指定選項,如 ImageBehavior 或渲染選項進行自定義。這與以前的 .NET 版本相同。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me