在C#中将多页图像转换为PDF
Spire.PDF for .NET 是一款专门对 Word 文档进行操作的 .NET 类库。致力于在于帮助开发人员轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档,而无需安装 Microsoft Word。
行号用于在每行文本旁边显示 Word 自动计算的行数。当我们需要参考合同或法律文件等文档中的特定行时,它非常有用。word中的行号功能允许我们设置起始值、编号间隔、与文本的距离以及行号的编号方式。使用 Spire.Doc,我们可以实现上述所有功能。本文将介绍如何将 XPS 转为PDF 格式。
欢迎加入spire技术交流群:767755948
对于将图像转换为PDF的功能,Spire.PDF可以快速有效地处理。该.NET PDF库不仅可以将常用格式的图像转换为PDF文档,如jpg、bmp、png,还可以将gif、tif和ico图像转换为PDF。只需在此下载即可。
要使用Spire.PDF将多页图像转换为PDF文件,只需将以下代码复制到您的应用程序中,并调用方法ConvertImagetoPDF即可完成。
步骤1:分割多页图像的方法
Spire.Pdf有一个名为DrawImage的方法将图像转换为PDF。但它不能直接处理多页图像。因此在转换之前,需要将多页图像分割成多个单页图像。
[C#]
1 Guid guid = image.FrameDimensionsList[0]; 2 FrameDimension dimension = new FrameDimension(guid); 3 int pageCount = image.GetFrameCount(dimension);这一步是为了获得多页图像中的帧总数(页数)。
[C#]
1 image.SelectActiveFrame(dimension, i);
这一步是在该图像对象中选择一帧图像。
[C#]
1 image.Save(buffer, format);将所选帧保存到缓冲区。
第2步:将图像转换为PDF
分割多页图像后,Spire.Pdf可以使用DrawImage方法直接将分割后的图像绘制成PDF。
[C#]
1 PdfImage pdfImg = PdfImage.FromImage(img[i])以PdfImage格式加载图像文件。
[C#]
1 page.Canvas.DrawImage(pdfImg, x, 0, width, height);绘制PdfImage到PDF。唯一要做的是指定图像在PDF上的位置。宽度和高度是图像将被绘制的区域的大小。有时我们需要放大或缩小图像的原始尺寸,直到它适合PDF页面。x和0是坐标。
检查原始TIF文件的有效截图。
PDF文件:
完整演示:
[C#]
using Spire.Pdf; using Spire.Pdf.Graphics; using System; using System.Drawing; using System.Drawing.Imaging; using System.IO; namespace ConvertMultipageImagetoPDF { class Program { static void Main(string[] args) { { ConvertImagetoPDF(@"..\..\Chapter1.tif"); } } public static void ConvertImagetoPDF(String ImageFilename) { using (PdfDocument pdfDoc = new PdfDocument()) { Image image = Image.FromFile(ImageFilename); Image[] img = SplitImages(image, ImageFormat.Png); for (int i = 0; i < img.Length; i++) { PdfImage pdfImg = PdfImage.FromImage(img[i]); PdfPageBase page = pdfDoc.Pages.Add(); float width = pdfImg.Width * 0.3f; float height = pdfImg.Height * 0.3f; float x = (page.Canvas.ClientSize.Width - width) / 2; page.Canvas.DrawImage(pdfImg, x, 0, width, height); } string PdfFilename = "result.pdf"; pdfDoc.SaveToFile(PdfFilename); System.Diagnostics.Process.Start(PdfFilename); } } public static Image[] SplitImages(Image image, ImageFormat format) { Guid guid = image.FrameDimensionsList[0]; FrameDimension dimension = new FrameDimension(guid); int pageCount = image.GetFrameCount(dimension); Image[] frames = new Image[pageCount]; for (int i = 0; i < pageCount; i++) { using (MemoryStream buffer = new MemoryStream()) { image.SelectActiveFrame(dimension, i); image.Save(buffer, format); frames[i] = Image.FromStream(buffer); } } return frames; } } }