Aspose.Word是一款功能强大的word处理控件,支持对Word的创建,编辑,修改,保存,转换等,支持多种格式文件转换为word,或者把word转换为多种其他文件格式,同时支持.NET和JAVA,是一款被广泛使用的文档处理控件。
这篇文章我们简单介绍Aspose.Word如何将图片转换为PDF文件,使用Aspose.Word进行转换是相当简单的,支持的图片格式有JPEG, PNG, BMP, EMF,WMF, TIF , GIF 等。具体的方法请查看下面的事例代码:
C#
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Reflection;
using Aspose.Words;
using Aspose.Words.Drawing;
namespace ImageToPdf
{
class Program
{
public static void Main(string[] args)
{
// Sample infrastructure.
string exeDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + Path.DirectorySeparatorChar;
string dataDir = new Uri(new Uri(exeDir), @"../../Data/").LocalPath;
ConvertImageToPdf(dataDir + "Test.jpg", dataDir + "TestJpg Out.pdf");
ConvertImageToPdf(dataDir + "Test.png", dataDir + "TestPng Out.pdf");
ConvertImageToPdf(dataDir + "Test.wmf", dataDir + "TestWmf Out.pdf");
ConvertImageToPdf(dataDir + "Test.tiff", dataDir + "TestTiff Out.pdf");
ConvertImageToPdf(dataDir + "Test.gif", dataDir + "TestGif Out.pdf");
}
/// <summary>
/// Converts an image to PDF using Aspose.Words for .NET.
/// </summary>
/// <param name="inputFileName">File name of input image file.</param>
/// <param name="outputFileName">Output PDF file name.</param>
public static void ConvertImageToPdf(string inputFileName, string outputFileName)
{
// Create Aspose.Words.Document and DocumentBuilder.
// The builder makes it simple to add content to the document.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Read the image from file, ensure it is disposed.
using (Image image = Image.FromFile(inputFileName))
{
// Find which dimension the frames in this image represent. For example
// the frames of a BMP or TIFF are "page dimension" whereas frames of a GIF image are "time dimension".
FrameDimension dimension = new FrameDimension(image.FrameDimensionsList[0]);
// Get the number of frames in the image.
int framesCount = image.GetFrameCount(dimension);
// Loop through all frames.
for (int frameIdx = 0; frameIdx < framesCount; frameIdx++)
{
// Insert a section break before each new page, in case of a multi-frame TIFF.
if (frameIdx != 0)
builder.InsertBreak(BreakType.SectionBreakNewPage);
// Select active frame.
image.SelectActiveFrame(dimension, frameIdx);
// We want the size of the page to be the same as the size of the image.
// Convert pixels to points to size the page to the actual image size.
PageSetup ps = builder.PageSetup;
ps.PageWidth = ConvertUtil.PixelToPoint(image.Width, image.HorizontalResolution);
ps.PageHeight = ConvertUtil.PixelToPoint(image.Height, image.VerticalResolution);
// Insert the image into the document and position it at the top left corner of the page.
builder.InsertImage(
image,
RelativeHorizontalPosition.Page,
0,
RelativeVerticalPosition.Page,
0,
ps.PageWidth,
ps.PageHeight,
WrapType.None);
}
}
// Save the document to PDF.
doc.Save(outputFileName);
}
}
}
Visual Basic
Imports Microsoft.VisualBasic
Imports System
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.IO
Imports System.Reflection
Imports Aspose.Words
Imports Aspose.Words.Drawing
Namespace ImageToPdf
Friend Class Program
Public Shared Sub Main(ByVal args() As String)
' Sample infrastructure.
Dim exeDir As String = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + Path.DirectorySeparatorChar
Dim dataDir As String = New Uri(New Uri(exeDir), "../../Data/").LocalPath
ConvertImageToPdf(dataDir & "Test.jpg", dataDir & "TestJpg Out.pdf")
ConvertImageToPdf(dataDir & "Test.png", dataDir & "TestPng Out.pdf")
ConvertImageToPdf(dataDir & "Test.wmf", dataDir & "TestWmf Out.pdf")
ConvertImageToPdf(dataDir & "Test.tiff", dataDir & "TestTiff Out.pdf")
ConvertImageToPdf(dataDir & "Test.gif", dataDir & "TestGif Out.pdf")
End Sub
''' <summary>
''' Converts an image to PDF using Aspose.Words for .NET.
''' </summary>
''' <param name="inputFileName">File name of input image file.</param>
''' <param name="outputFileName">Output PDF file name.</param>
Public Shared Sub ConvertImageToPdf(ByVal inputFileName As String, ByVal outputFileName As String)
' Create Aspose.Words.Document and DocumentBuilder.
' The builder makes it simple to add content to the document.
Dim doc As New Document()
Dim builder As New DocumentBuilder(doc)
' Read the image from file, ensure it is disposed.
Using image As Image = Image.FromFile(inputFileName)
' Find which dimension the frames in this image represent. For example
' the frames of a BMP or TIFF are "page dimension" whereas frames of a GIF image are "time dimension".
Dim dimension As New FrameDimension(image.FrameDimensionsList(0))
' Get the number of frames in the image.
Dim framesCount As Integer = image.GetFrameCount(dimension)
' Loop through all frames.
For frameIdx As Integer = 0 To framesCount - 1
' Insert a section break before each new page, in case of a multi-frame TIFF.
If frameIdx <> 0 Then
builder.InsertBreak(BreakType.SectionBreakNewPage)
End If
' Select active frame.
image.SelectActiveFrame(dimension, frameIdx)
' We want the size of the page to be the same as the size of the image.
' Convert pixels to points to size the page to the actual image size.
Dim ps As PageSetup = builder.PageSetup
ps.PageWidth = ConvertUtil.PixelToPoint(image.Width, image.HorizontalResolution)
ps.PageHeight = ConvertUtil.PixelToPoint(image.Height, image.VerticalResolution)
' Insert the image into the document and position it at the top left corner of the page.
builder.InsertImage(image, RelativeHorizontalPosition.Page, 0, RelativeVerticalPosition.Page, 0, ps.PageWidth, ps.PageHeight, WrapType.None)
Next frameIdx
End Using
' Save the document to PDF.
doc.Save(outputFileName)
End Sub
End Class
End Namespace