在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;
}
}
}

QQ交谈
在线咨询

渝公网安备
50010702500608号

客服热线