跳至页脚内容
使用IRONPDF

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

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

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

IronPDF是一个.NET库,用于在.NET项目中生成、读取、编辑和保存PDF文件。 IronPDF为.NET 5、Core、Standard & Framework提供HTML-to-PDF功能,全面支持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 包以使用它的功能。 IronPDF的一个优点是它通过不依赖专有API减少了生成PDF文档的麻烦。HTML to PDF渲染可以从以下开放标准文档类型呈现像素完美的PDF:HTML、JS、CSS、JPG、PNG、GIF和SVG。 简而言之,它利用了开发人员已经具备的技能。

如何安装IronPDF NuGet包?

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

Visual Studio中的Package Manager Console界面显示NuGet包管理的命令行接口 包管理器控制台UI

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

Install-Package IronPdf

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

Package Manager Console显示IronPDF包的成功安装,带有版本信息和依赖项 在包管理器控制台中安装IronPDF包

哪些是替代安装方法?

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

  • NuGet Package Manager UI:右键点击您的项目,选择"Manage NuGet Packages",搜索"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 suite的一部分。 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 机器人,将他对技术的热爱与创造力相结合。

Iron Support Team

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