来源:http://www.evget.com/zh-CN/Info/catalog/17968.html
本文将展示如何使用Aspose.Words将一个图像转换为PDF。虽然图像转换PDF并不是Aspose.Words的主要特点,但是这个例子展示了使用Aspose.Words完成这项任务的简易程度。
下面的代码允许转换单帧图像,比如JPEG、PNG、BMP,EMF或WMF,以及多帧TIF图像和GIF,并将它们转换为PDF。
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
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);
// Get the number of frames in the image.
int
framesCount = image.GetFrameCount(FrameDimension.Page);
// 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
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
|