7.3  Placing Images and Imported PDF Pages s 161
not specified any fit method the image will be output in its original size and will exceed 
the box.
Fitting an image proportionally into a box with orientation. Our next goal is to orien-
tate the image to the west with a predefined size. We define a box of the desired size and 
fit the image into the box with the image’s proportions being unchanged 
(fitmethod=meet). The orientation is specified as orientate=west. By default, the image 
will be placed in the lower left corner of the box (see Figure 7.31b). Figure 7.31c shows the 
image orientated to the east, and Figure 7.31d the orientation to the south.
The orientate option supports the direction keywords north, east, west, and south as 
demonstrated in Figure 7.30. 
Note that the orientate option has no influence on the whole coordinate system but 
only on the placed object.
Fig. 7.31 1 Orientating an image
Generated output
Option list for PDF_fit_image()
a)
boxsize {70 45} orientate=west
b)
boxsize {70 45} orientate=west fitmethod=meet
c)
boxsize {70 45} orientate=east fitmethod=meet
d)
boxsize {70 45} orientate=south fitmethod=meet
e)
boxsize {70 45} position={center bottom} orientate=east 
fitmethod=clip
Fig. 7.29
The rotate option
Fig. 7.30
The orientate option
Pdf files thumbnails - Draw thumbnail images for PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
pdf thumbnail generator online; pdf thumbnails
Pdf files thumbnails - VB.NET PDF Thumbnail Create SDK: Draw thumbnail images for PDF in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
how to view pdf thumbnails in; create thumbnail from pdf c#
162
Chapter 7:  Formatting Features
Fitting an oriented image into a box with clipping. We orientate the image to the east 
(orientate=east) and position it centered at the bottom of the box (position={center 
bottom}). In addition, we place the image in its original size and clip it if it exceeds the 
box (fitmethod=clip) (see Figure 7.31e).
7.3.5Rotating an Object
Rotating an object works similarly to orientation. However, it does not only affect the 
placed object but the whole coordinate system. 
Placing an image with rotation. Our first goal is to rotate an image by 90˚ counter-
clockwise. Before placing the object the coordinate system will be rotated at the refer-
ence point (50,0) by 90˚ counterclockwise. The rotated object’s lower right corner 
(which is the unrotated object’s lower left corner) will end up at the reference point. This 
case is shown in Figure 7.32a.
Since the rotation affects the whole coordinate system, the box will be rotated as 
well. Similarly, we can rotate the image by 30˚ counterclockwise (see Figure 7.32b). Fig-
ure 7.29 demonstrates the general behaviour of the rotate option.
Fitting an image with rotation. Our next goal is to fit the image rotated by 90˚ coun-
terclockwise into the box while maintaining its proportions. This is accomplished using 
fitmethod=meet (see Figure 7.32c). Similarly, we can rotate the image by 30˚ counter-
clockwise and proportionally fit the image into the box (see Figure 7.32d).
Fig. 7.32 2 Rotating an image 
Generated output
Option list for PDF_fit_image()
a)
boxsize {70 45} rotate=90
b)
boxsize {70 45} rotate=30
c)
boxsize {70 45} rotate=90 fitmethod=meet
d)
boxsize {70 45} rotate=30 fitmethod=meet
(x, y)
(x, y)
(x, y)
(x, y)
C# HTML5 PDF Viewer SDK to view PDF document online in C#.NET
Images. File and Page Process. File: Merge, Append PDF Files. File: Split PDF Document. File: Compress PDF. Page: Create Thumbnails. Page: Insert PDF Pages. Page
print pdf thumbnails; show pdf thumbnails
C# PDF Convert to Jpeg SDK: Convert PDF to JPEG images in C#.net
Turn multiple pages PDF into single jpg files respectively online. Support of converting from any single one PDF page and multiple pages. Thumbnails can be
show pdf thumbnail in; can't see pdf thumbnails
7.3  Placing Images and Imported PDF Pages s 163
7.3.6Adjusting the Page Size
In the next example we will automatically adjust the page size to the object’s size. This 
can be useful, for example, for archiving images in the PDF format. The reference point 
(x,y) can be used to specify whether the page will have exactly the object’s size, or some-
what larger or smaller. When enlarging the page size (see Figure 7.33) some border will 
be kept around the image. If the page size is smaller than the image some parts of the 
image will be clipped. Let’s start with exactly matching the page size to the object’s size:
p.fit_image(image, 0, 0, "adjustpage");
The next code fragment increases the page size by 40 units in x and y direction, creating 
a white border around the object:
p.fit_image(image, 40, 40, "adjustpage");
The next code fragment decreases the page size by 40 units in x and y direction. The ob-
ject will be clipped at the page borders, and some area within the object (with a width of 
40 units) will be invisible:
p.fit_image(image, -40, -40, "adjustpage");
In addition to placing by means of x and y coordinates (which specify the object’s dis-
tance from the page edges, or the coordinate axes in the general case) you can also spec-
ify a target box. This is a rectangular area in which the object will be placed subject to 
various formatting rules. These can be controlled with the boxsizefitmethod and position 
options.
Fig. 7.33
Adjusting the page
size. Left to right:
exact, enlarge,
shrink
C# PDF File Compress Library: Compress reduce PDF size in C#.net
TIFF files compression and decompression method and Image files compression and images size reducing can help to reduce PDF file size Embedded page thumbnails.
pdf reader thumbnails; .pdf printing in thumbnail size
VB.NET PDF File Merge Library: Merge, append PDF files in vb.net
File: Merge, Append PDF Files. |. Home ›› XDoc.PDF ›› VB.NET PDF: Merge and Append PDF. VB.NET Demo code to Combine and Merge Multiple PDF Files into One.
enable pdf thumbnail preview; pdf first page thumbnail
164
Chapter 7:  Formatting Features
7.4Table Formatting
The table formatting feature can be used to automatically format complex tables. Table 
cells may contain single- or multi-line text, images or PDF graphics. Tables are not re-
stricted to a single fitbox, but can span multiple pages.
Cookbook Code samples regarding table issues can be found in the tables category of the PDFlib Cook-
book.
General aspects of a table. The description of the table formatter is based on the fol-
lowing concepts and terms (see Figure 7.34):
>A table is a virtual object with a rectangular outline. It is comprised of horizontal 
rows and vertical columns
>A simple cell is a rectangular area within a table, defined as the intersection of a row 
and a column. A spanning cell spans more than one column, more than one row, or 
both. The term cell will be used to designate both simple and spanning cells.
>The complete table may fit into one fitbox, or several fitboxes may be required. The 
rows of the table which are placed in one fitbox constitute a table instance. Each call 
to PDF_fit_table() will place one table instance in one fitbox (see Section 7.4.5, »Table 
Instances«, page 173).
>The header or footer is a group of one or more rows at the beginning or end of the ta-
ble which are repeated at the top or bottom of each table instance. Rows which are 
neither part of the header nor footer are called body rows.
As an example, all aspects of creating the table in Figure 7.34 will be explained. A com-
plete description of the table formatting options can be found in the PDFlib Reference. 
Creating a table starts by defining the contents and visual properties of each table cell 
with PDF_add_table_cell(). Then you place the table using one or more calls to PDF_fit_
table().
Our Paper Plane Models
2   Long Distance Glider
Material
Benefit
Drawing paper 180g/sqm
With this paper rocket you
can send all your messages
even when sitting in the 
cinema pretty near the back.
1   Giant Wing
Material
Benefit
Offset print paper 220g/sqm
It is amazingly robust and
can even do aerobatics. But
it is best suited to gliding.
Amazingly robust!
3   Cone Head Rocket
Material
Benefit
Kent paper 200g/sqm
This paper arrow can be
thrown with big swing. It
stays in the air a long time.
With big swing!
Fig. 7.34
Sample table
Header
Cell containing
image and text line
Cell spanning 
three rows
Cell spanning 
three columns
Simple cell
Footer
Cell containing
Textflow
VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.
' Convert PDF file to HTML5 files DocumentConverter.ConvertToHtml5("..\1.pdf", "..output\", RelativeType.SVG). Copyright © <2000-2016> by <RasterEdge.com>.
pdf thumbnail html; pdf thumbnail creator
C# PDF File Split Library: Split, seperate PDF into multiple files
Also able to combine generated split PDF document files with other PDF files to form a new PDF file. Split PDF Document into Multiple PDF Files in C#.
no pdf thumbnails in; create thumbnail from pdf
7.4  Table Formatting g 165
When placing the table the size of its fitbox and the ruling and shading of table rows 
or columns can be specified. Use the Matchbox feature for details such as cell-specific 
shading (see Section 7.5, »Matchboxes«, page 177, for more information).
In this section the most important options for defining the table cells and fitting the 
table will be discussed. All examples demonstrate the relevant calls of PDF_add_table_
cell() and PDF_fit_table() only, assuming that the required font has already been loaded.
Note Table processing is independent from the current graphics state. Table cells can be defined in 
document scope while the actual table placement must be done in page scope.
Cookbook A full code sample can be found in the Cookbook topic tables/starter_table.
7.4.1Placing a Simple Table
Before we describe the table concepts in more detail, we will demonstrate a simple ex-
ample for creating a table. The table contains six cells which are arranged in three rows 
and two columns. Four cells contain text lines, and one cell contains a multi-line Text-
flow. All cell contents are horizontally aligned to the left, and vertically aligned to the 
center with a margin of 4 points.
To create the table we first prepare the option list for the text line cells by defining 
the required options font and fontsize and a position of {left center} in the fittextline sub-
option list. In addition, we define cell margins of 4 points. Then we add the text line cells 
one after the other in their respective column and row, with the actual text supplied di-
rectly in the call to PDF_add_table_cell().
In the next step we create a Textflow, use the Textflow handle to assemble the option 
list for the Textflow table cell, and add that cell to the table. 
Finally we place the table with PDF_fit_table()
while visualizing the table frame and 
cell borders with black lines. Since we didn’t supply any column widths, they will be cal-
culated automatically from the supplied text lines plus the margins.
Cookbook A full code sample can be found in the Cookbook topic tables/vertical_text_alignment.
The following code fragment shows how to create the simple table. The result is shown 
in Figure 7.35a.
/* Text for filling a table cell with multi-line Textflow */
String tf_text = "It is amazingly robust and can even do aerobatics. " +
"But it is best suited to gliding.";
/* Define the column widths of the first and the second column */
int c1 = 80, c2 = 120;
/* Define the lower left and upper right corners of the table instance (fitbox) */
double llx=100, lly=500, urx=300, ury=600;
/* Load the font */
font = p.load_font("Helvetica", "unicode", "");
if (font == -1)
throw new Exception("Error: " + p.get_errmsg());
/* Define the option list for the text line cells placed in the first column */
optlist = "fittextline={position={left center} font=" + font + " fontsize=8} margin=4" +
colwidth=" + c1;
/* Add a text line cell in column 1 row 1 */
C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net
How to Use C#.NET Demo Code to Convert PDF Document to HTML5 Files in C#.NET Class. Add necessary references: RasterEdge.Imaging.Basic.dll.
pdf files thumbnail preview; create pdf thumbnail
VB.NET PDF File Split Library: Split, seperate PDF into multiple
splitter control provides VB.NET developers an easy to use solution that they can split target multi-page PDF document file to one-page PDF files or they can
can't view pdf thumbnails; pdf thumbnail
166
Chapter 7:  Formatting Features
tbl = p.add_table_cell(tbl, 1, 1, "Our Paper Planes", optlist);
if (tbl == -1)
throw new Exception("Error: " + p.get_errmsg());
/* Add a text line cell in column 1 row 2 */
tbl = p.add_table_cell(tbl, 1, 2, "Material", optlist);
if (tbl == -1)
throw new Exception("Error: " + p.get_errmsg());
/* Add a text line cell in column 1 row 3 */
tbl = p.add_table_cell(tbl, 1, 3, "Benefit", optlist);
if (tbl == -1)
throw new Exception("Error: " + p.get_errmsg());
/* Define the option list for a text line placed in the second column */
optlist = "fittextline={position={left center} font=" + font + " fontsize=8} " +
"colwidth=" + c2 + " margin=4";
/* Add a text line cell in column 2 row 2 */
tbl = p.add_table_cell(tbl, 2, 2, "Offset print paper 220g/sqm", optlist);
if (tbl == -1)
throw new Exception("Error: " + p.get_errmsg());
/* Add a Textflow */
optlist = "font=" + font + " fontsize=8 leading=110%"; 
tf = p.add_textflow(-1, tf_text, optlist);
/* Define the option list for the Textflow cell using the handle retrieved above */
optlist = "textflow=" + tf + " margin=4 colwidth=" + c2";
/* Add the Textflow table cell in column 2 row 3 */
tbl = p.add_table_cell(tbl, 2, 3, "", optlist);
if (tbl == -1)
throw new Exception("Error: " + p.get_errmsg());
p.begin_page_ext(0, 0, "width=200 height=100");
/* Define the option list for fitting the table with table frame and cell ruling */
optlist = "stroke={{line=frame linewidth=0.8} {line=other linewidth=0.3}}";
/* Place the table instance */
result = p.fit_table(tbl, llx, lly, urx, ury, optlist);
/* Check the result; "_stop" means all is ok. */
if (!result.equals("_stop")) {
if (result.equals( "_error"))
throw new Exception("Error: " + p.get_errmsg());
else {
/* Any other return value requires dedicated code to deal with */
}
}
p.end_page_ext("");
/* This will also delete Textflow handles used in the table */
p.delete_table(tbl, "");
Fine-tuning the vertical alignment of cell contents. When we vertically center con-
tents of various types in the table cells, they will be positioned with varying distance 
7.4  Table Formatting g 167
from the borders. In Figure 7.35a, the four text line cells have been placed with the fol-
lowing option list:
optlist = "fittextline={position={left center} font=" + font + 
" fontsize=8} colwidth=80 margin=4";
The Textflow cell is added without any special options. Since we vertically centered the 
text lines, the Benefit line will move down with the height of the Textflow.
Fig. 7.35 5 Aligning text lines and Textflow in table cells
As shown in Figure 7.35b, we want all cell contents to have the same vertical distance 
from the cell borders regardless of whether they are Textflows or text lines. To accom-
plish this we first prepare the option list for the text lines. We define a fixed row height 
of 14 points, and the position of the text line to be on the top left with a margin of 4 
points.
The fontsize=8 option which we supplied before doesn’t exactly represent the letter 
height but adds some space below and above. However, the height of an uppercase let-
ter is exactly represented by the capheight value of the font. For this reason we use 
fontsize={capheight=6} which will approximately result in a font size of 8 points and 
(along with margin=4), will sum up to an overall height of 14 points corresponding to the 
rowheight optionThe complete option list of PDF_add_table_cell( ) for our text line cells 
looks as follows:
/* option list for the text line cells */
optlist = "fittextline={position={left top} font=" + font + 
" fontsize={capheight=6}} rowheight=14 colwidth=80 margin=4";
To add the Textflow we use fontsize={capheight=6} which will approximately result in a 
font size of 8 points and (along with margin=4), will sum up to an overall height of 14 
points as for the text lines above. 
/* option list for adding the Textflow */
optlist = "font=" + font + " fontsize={capheight=6} leading=110%"; 
In addition, we want the baseline of the Benefit text aligned with the first line of the 
Textflow. At the same time, the Benefit text should have the same distance from the top 
Generated output
a)
b)
Our Paper Planes
Material
Benefit
Offset print paper 220g/sqm
It is amazingly robust and can
even do aerobatics. But it is
best suited to gliding.
Our Paper Planes
Material
Benefit
Offset print paper 220g/sqm
It is amazingly robust and can
even do aerobatics. But it is
best suited to gliding.
168
Chapter 7:  Formatting Features
cell border as the Material text. To avoid any space from the top we add the Textflow cell 
using fittextflow={firstlinedist=capheight}. Then we add a margin of 4 points, the same as 
for the text lines:
/* option list for adding the Textflow cell */
optlist = "textflow=" + tf + " fittextflow={firstlinedist=capheight} "
"colwidth=120 margin=4";
Cookbook A full code sample can be found in the Cookbook topic tables/vertical_text_alignment.
7.4.2Contents of a Table Cell
When adding a cell to a table with PDF_add_table_cell(), you can specify various kinds of 
cell contents. For example, the cells of the paper plane table contain the elements illus-
trated in Figure 7.36.
Single-line text. The text is supplied in the text parameter of PDF_add_table_cell(). In 
the fittextline option all of the formatting options of PDF_fit_textline() can be specified
The default fit method is fitmethod=nofit. The cell will be enlarged if the text doesn’t 
completely fit into the cell. To avoid this, use fitmethod=auto to shrink the text subject 
to the shrinklimit option. If no row height is given it will be calculated as the font size 
times 1.5. The same applies to the row width for rotated text.
Multi-line text with Textflow. The Textflow must have been prepared outside the ta-
ble functions and created with PDF_create_textflow() or PDF_add_textflow() before call-
ing PDF_add_table_cell(). The Textflow handle is supplied in the textflow option. In the 
fittextflow option all of the formatting options of PDF_fit_textflow() can be specified.
The default fit method is fitmethod=clip. This means: First it is attempted to com-
pletely fit the text into the cell. If the cell is not large enough its height will be increased. 
If the text do not fit anyway it will be clipped at the bottom. To avoid this, use 
fitmethod=auto to shrink the text subject to the minfontsize option.
When the cell is too narrow the Textflow could be forced to split single words at un-
desired positions. If the checkwordsplitting option is true the cell width will be enlarged 
until no word splitting occurs any more.
Images and templates. Images must be loaded with PDF_load_image() before calling 
PDF_add_table_cell(). Templates must be created with PDF_begin_template(). The image 
or template handle is supplied in the image option. In the fitimage option all of the for-
matting options of PDF_fit_image() can be specified. The default fit method is 
fitmethod=meet. This means that the image/template will be placed completely inside 
the cell without distorting its aspect ratio. The cell size will not be changed due to the 
size of the image/template.
Text line
Text line 
Text line
Text line
Text line
Textflow ................................
..............................................
..............................................
Text line
Fig. 7.36
Contents of the 
table cells
7.4  Table Formatting g 169
Pages from an imported PDF document. The PDI page must have been opened with 
PDF_open_pdi_page() before calling PDF_add_table_cell(). The PDI page handle is sup-
plied in the pdipage option. In the fitpdipage option all of the formatting options of PDF_
fit_pdi_page() can be specifiedThe default fit method is fitmethod=meet. This means 
that the PDI page will be placed completely inside the cell without distorting its aspect 
ratio. The cell size will not be changed due to the size of the PDI page.
Multiple content types in a cell. Table cells can contain one or more of those content 
types at the same time. Additional ruling and shading is available, as well as matchbox-
es for interactive features such as links or form fields.
Positioning cell contents. By default, cell contents are positioned with respect to the 
cell box. The margin options of PDF_add_table_cell() can be used to specify some dis-
tance from the cell borders. The resulting rectangle is called the inner cell box. If any of 
the margins is defined, the cell contents will be placed with respect to the inner cell box 
(see Figure 7.37). If no margins are defined the inner cell box will be identical to the cell 
box. 
In addition, the cell contents may be subject to further options supplied in the content-
specific fit options, as described in section Section 7.4.4, »Mixed Table Contents«, page 
170.
7.4.3Table and Column Widths
When adding a cell to the table, you define the number of columns and/or rows 
spanned by the cell with the colspan and rowspan options. By default, a cell spans one 
column and one row. The total number of columns and rows in the table is implicitly in-
creased by the respective values when adding a cell. Figure 7.38 shows an example of a 
table containing three columns and four rows.
Furthermore you can explicitly supply the width of the first column spanned by the cell 
with the colwidth option. By supplying each cell with a defined first column width all 
inner cell box
cell box
left margin
top margin
bottom margin
right margin
Fig. 7.37
Fitting contents in 
the inner cell box
cell ............ spanning ............ three ............ columns
cell ...... spanning ...... two ...... columns
2
4
3
3
4
2
1
1
1
1
1
2
2
3
simple cell
simple cell
simple cell
simple cell
row 1
row 2
row 3
row 4
column 1
column 2
column 3
cell ....
.... spanning ....
.... three rows
Fig. 7.38
Simple cells and cells spanning 
several rows or columns
170
Chapter 7:  Formatting Features
those width values will implicitly add up to the total table width. Figure 7.39 shows an 
example.
Alternatively, you can specify the column widths as percentages if appropriate. In this 
case the percentages refer to the width of the table’s fitbox. Either none or all column 
widths must be supplied as percentages. 
If some columns are combined to a column scaling group with the colscalegroup op-
tion of PDF_add_table_cell(), their widths will be adjusted to the widest column in the 
group (see Figure 7.40),
If absolute coordinates are used (as opposed to percentages) and there are cells left 
without any column width defined, the missing widths are calculated as follows: First, 
for each cell containing a text line the actual width is calculated based on the column 
width or the text width (or the text height in case of rotated text). Then, the remaining 
table width is evenly distributed among the column widths which are still missing.
7.4.4Mixed Table Contents
In the following sections we will create the sample table containing various kinds of 
contents as shown in Figure 7.41 step by step. 
Cookbook A full code sample can be found in the Cookbook topic tables/mixed_table_contents.
As a prerequisite we need to load two fonts. We define the dimensions of the table’s fit-
box in terms of the coordinates of the lower left and upper right corners and specify the 
widths of the three table columns. Then, we start a new page with A4 size:
double llx = 100, lly = 500, urx = 360, ury = 600; // coordinates of the table
int c1 = 50, c2 = 120, c3 = 90; // widths of the three table columns
2
4
3
3
4
2
1
1
1
1
1
2
2
3
colspan=1
colwidth=100
colspan=1
colwidth=50
colspan=1
colwidth=50
colspan=1
colwidth=100
50
100
90
colspan=2
colwidth=50
rowspan=3
colwidth=90
colspan=3 
colwidth=50
total table width of 240
Fig. 7.39
Column widths define 
the total table width.
Long Distance Glider
Giant Wing
Cone Head Rocket
Max. Load
Range
12g
Weight
14g
11.2g
12.4g
5g
7g
30m
7m
18m
Speed
8m/s
5m/s
6m/s
column scaling group
Fig. 7.40
The last four cells in the first row are in the 
same column scaling group. They will have 
the same widths.
Documents you may be interested
Documents you may be interested