來源: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 |