在C#中將多頁圖像轉(zhuǎn)換為PDF
Spire.PDF for .NET 是一款專門對 Word 文檔進行操作的 .NET 類庫。致力于在于幫助開發(fā)人員輕松快捷高效地創(chuàng)建、編輯、轉(zhuǎn)換和打印 Microsoft Word 文檔,而無需安裝 Microsoft Word。
行號用于在每行文本旁邊顯示 Word 自動計算的行數(shù)。當我們需要參考合同或法律文件等文檔中的特定行時,它非常有用。word中的行號功能允許我們設置起始值、編號間隔、與文本的距離以及行號的編號方式。使用 Spire.Doc,我們可以實現(xiàn)上述所有功能。本文將介紹如何將 XPS 轉(zhuǎn)為PDF 格式。
歡迎加入spire技術交流群:767755948
對于將圖像轉(zhuǎn)換為PDF的功能,Spire.PDF可以快速有效地處理。該.NET PDF庫不僅可以將常用格式的圖像轉(zhuǎn)換為PDF文檔,如jpg、bmp、png,還可以將gif、tif和ico圖像轉(zhuǎn)換為PDF。只需在此下載即可。
要使用Spire.PDF將多頁圖像轉(zhuǎn)換為PDF文件,只需將以下代碼復制到您的應用程序中,并調(diào)用方法ConvertImagetoPDF即可完成。
步驟1:分割多頁圖像的方法
Spire.Pdf有一個名為DrawImage的方法將圖像轉(zhuǎn)換為PDF。但它不能直接處理多頁圖像。因此在轉(zhuǎn)換之前,需要將多頁圖像分割成多個單頁圖像。
[C#]
1 Guid guid = image.FrameDimensionsList[0]; 2 FrameDimension dimension = new FrameDimension(guid); 3 int pageCount = image.GetFrameCount(dimension);這一步是為了獲得多頁圖像中的幀總數(shù)(頁數(shù))。
[C#]
1 image.SelectActiveFrame(dimension, i);
這一步是在該圖像對象中選擇一幀圖像。
[C#]
1 image.Save(buffer, format);將所選幀保存到緩沖區(qū)。
第2步:將圖像轉(zhuǎn)換為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上的位置。寬度和高度是圖像將被繪制的區(qū)域的大小。有時我們需要放大或縮小圖像的原始尺寸,直到它適合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; } } }