跳至页脚内容
使用IRONPDF

如何在C#中将图像转换为PDF [代码示例教程]

IronPDF 通过其ImageToPdf方法,为 C# 中的图像到 PDF 转换提供了一个简单、免费的解决方案,允许开发人员只需几行代码和可自定义的页面设置即可转换单个或多个图像。

许多库允许 C# 开发人员将图像转换为 PDF。 找到一个免费的、用户友好的性能良好的库可能具有挑战性,因为有些库是付费的、复杂的或功能有限的。 在这些库中,IronPDF 是一个免费、高效且易于实施的 C# 库,脱颖而出。 它附带全面的文档和专门的支持服务。

IronPDF是一个.NET库,用于在.NET项目中生成、读取、编辑和保存PDF文件。 IronPDF 为 .NET 5、Core、Standard 和 Framework 提供HTML 转 PDF功能,并完全支持 HTML 转 PDF,包括 CSS3 和 JS。 该库利用Chrome 渲染引擎,确保从各种来源生成像素级完美的 PDF 文件。

让我们来看看如何创建一个示例项目来学习如何将图像转换为 PDF。 本教程将指导您完成安装过程、基本图像转换以及处理多个图像和不同格式的高级功能。

如何创建 Visual Studio 项目?

要创建一个新项目,请打开 Microsoft Visual Studio。 建议使用最新版本的 Visual Studio。 创建新项目的步骤可能会因版本而异,但其余步骤应适用于每个版本。

  1. 点击创建新项目。
  2. 选择项目模板,然后在此演示中选择控制台应用程序模板。 您可以根据需要使用任何模板,包括ASP.NET CoreBlazor 应用程序
  3. 点击下一步。 给项目命名(例如," ImageTo ")。
  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+。 对于新项目,建议使用最新的 .NET LTS(长期支持)版本,以获得最佳性能和安全更新。 该库在WindowsLinuxmacOS平台上也能无缝运行。

接下来,在此项目中安装 IronPDF NuGet 包以使用它的功能。 IronPDF 的最大优点在于它无需依赖专有 API,从而消除了生成 PDF 文档的繁琐步骤。它支持将 HTML、JS、CSS、JPG、PNG、GIF 和 SVG 等开放标准文档类型渲染成像素级完美的 PDF文件。 简而言之,它利用了开发人员已经具备的技能。

如何安装 IronPDF NuGet 包?

要安装 NuGet 包,请转到工具 > NuGet 包管理器 > 包管理器控制台。 以下窗口将出现:

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

接下来,在包管理器控制台中编写以下命令:

Install-Package IronPdf

按下回车键。 安装过程将下载 IronPDF 及其依赖项,包括必要的Chrome 渲染引擎组件

! 软件包管理器控制台显示 IronPDF 软件包已成功安装,并包含版本信息和依赖项。 在包管理器控制台中安装IronPdf包

哪些是替代安装方法?

您还可以通过以下方式安装 IronPDF:

  • NuGet 程序包管理器界面:右键单击您的项目,选择"管理 NuGet 程序包",搜索"IronPdf",然后单击"安装"。 -包参考:添加<PackageReference Include="IronPdf" Version="*" />添加到你的 .csproj 文件中 -直接下载:从IronPDF 网站下载 DLL 文件并手动引用。 -命令行:在终端中使用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 检索指定文件夹中可用的所有文件。 Where 子句从该文件夹中过滤所有 JPG 图像并将它们存储在 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 =&gt; f) -按创建日期排序imageFiles.OrderBy(f =&gt; new FileInfo(f).CreationTime) -按文件大小排序imageFiles.OrderBy(f =&gt; 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

我可以指定打印机设置吗?

PdfDocument 类提供的 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 包管理器安装 IronPDF
  • 将单个图像转换为具有自定义行为的 PDF
  • 批量将多张图片转换为一个PDF文件
  • 控制页面大小、方向和边距
  • 向PDF文件添加元数据和页码
  • 通过编程方式打印带有选项的 PDF 文件

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

-从网页 URL 生成 PDF 文件 -对 PDF 文件进行加密和解密,以确保安全 -合并现有 PDF 文件以进行文档管理

哪里可以了解更多关于IronPDF的信息?

IronPDF提供了多种实用功能。 探索以下资源:

具体使用案例,请参阅:

IronPDF 的价格是多少?

IronPDF是Iron软件套件的一部分。 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 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。