9.6  Tagged PDF F 221
Generating page contents in visual order. The »logical order« approach forces the cre-
ator to construct the page contents in logical order even if it might be easier to create it 
in visual order: header, left column upper part, table, left column lower part, insert, 
right column, footer. Using PDF_activate_item() this ordering can be implemented as 
follows:
/* create page layout in visual order */
id_header = p.begin_item("Artifact", "");
/* 1 create header */
p.set_text_pos(x_header, y_header);
...
p.end_item(id_header);
id_art = p.begin_item("Art", "Title=Article");
id_sect1 = p.begin_item("Sect", "Title = {First Section}");
/* 2 create top part of left column */
p.set_text_pos(x1_left, y1_left_top);
...
String optlist = "Title=Table parent=" + id_art;
id_table = p.begin_item("Table", optlist);
/* 3 create table structure and content */
p.set_text_pos(x_start_table, y_start_table);
...
p.end_item(id_table);
/* continue with first section */
p.activate_item(id_sect1);
/* 4 create bottom part of left column */
p.set_text_pos(x1_left, y1_left_bottom);
...
Fig. 9.1
Creating a complex
page layout in logical
structure order (left)
and in visual order
(right). The right vari-
ant uses item activa-
tion for the first sec-
tion before continuing
fragments 4 and 6.
1
2
3
4
5
6
7
2
4
6
7
3
5
1
8
8
.Pdf printing in thumbnail size - Draw thumbnail images for PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
create thumbnail jpg from pdf; generate thumbnail from pdf
.Pdf printing in thumbnail size - 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
pdf reader thumbnails; no pdf thumbnails in
222
Chapter 9:  Generating various PDF Flavors
optlist = "Title=Insert parent=" + id_art;
id_insert = p.begin_item("P", optlist);
/* 5 create insert structure and content */
p.set_text_pos(x_start_table, y_start_table);
...
p.end_item(id_insert);
/* still more contents for the first section */
p.activate_item(id_sect1);
/* 6 create top part of right column */   
p.set_text_pos(x1_right, y1_right_top);
...
p.end_item(id_sect1);
id_sect2 = p.begin_item("Sect", "Title={Second Section}");
/* 7 create bottom part of right column */
p.set_text_pos(x2_right, y2_right);
...
/* second section may be continued on next page(s) */
p.end_item(id_sect2);
id_footer = p.begin_item("Artifact", "");
/* 8 create footer */
p.set_text_pos(x_footer, y_footer);
...
p.end_item(id_footer);
/* article may be continued on next page(s) */
...
p.end_item(id_art);
With this ordering of structure elements the main text (which spans one and a half col-
umns) is interrupted twice for the table and the insert. Therefore it must also be activat-
ed twice using PDF_activate_item().
The same technique can be applied if the content spans multiple pages. For example, 
the header or other inserts could be created first, and then the main page content ele-
ment is activated again.
9.6.4Using Tagged PDF in Acrobat
This section mentions observations which we made while testing Tagged PDF output in 
Adobe Acrobat 7/8/9. The observations below are mostly related to bugs or inconsistent 
behavior in Acrobat. Unless mentioned otherwise the observation relate to Acrobat 7, 8, 
and 9. A workaround is provided in cases where we found one.
Acrobat’s Reflow Feature. Acrobat allows Tagged PDF documents to reflow, i.e. to ad-
just the page contents to the current window size. While testing Tagged PDF we made 
several observations regarding the reflow feature in Acrobat:
>The order of content on the page should follow the desired reflow order.
>Symbol (non-Unicode fonts) can cause Reflow in Acrobat 7 and 8 to crash, and can 
disable Reflow in Acrobat 9. For this reason it is recommended to put the text in a 
Figure element.
>BLSEs may contain both structure children and direct content elements. In order for 
Reflow feature (as well as Accessibility checker and Read Aloud) to work it is recom-
Create Thumbnail Winforms | Online Tutorials
For information about saving & printing images in Create Thumbnail; Generate Barcodes on Your Documents; Read Processing; RasterEdge OCR Engine; PDF Reading; Encode
thumbnail view in for pdf files; create pdf thumbnail image
VB.NET Image: Visual Basic .NET Guide to Draw Text on Image in .
can adjust the text font, font size, font type System.IO Imports System.Drawing.Printing Imports RasterEdge & profession imaging controls, PDF document, image
pdf preview thumbnail; generate pdf thumbnail c#
9.6  Tagged PDF F 223
mended to put the direct elements before the first child elements.
Structure items with mixed types of children (i.e., both page content sequences and 
non-inline structure elements) should be avoided since otherwise Reflow may fail.
>The BBox option should be provided for tables and illustrations. The BBox should be 
exact; however, for tables only the lower left corner has to be set exactly. As an alter-
native to supplying a BBox entry, graphics could also be created within a BLSE tag, 
such as P, H, etc. However, vector graphics will not be displayed when Reflow is active. 
If the client does not provide the BBox option (and relies on automatic BBox genera-
tion instead) all table graphics, such as cell borders, should be drawn outside the ta-
ble element.
>Table elements should only contain table-related elements (TR, TD, TH, THead, TBody, 
etc.) as child elements, but not any others. For example, using a Caption element 
within a table could result in reflow problems, although it would be correct Tagged 
PDF.
>Content covered by the Private tag will not be exported to other formats. However, 
they are subject to Reflow and Read Aloud, and illustrations within the Private tag 
must therefore have alternate text.
>Reflow seems to have problems with PDF documents generated with the topdown 
option.
>Structure items with mixed types of children (i.e., both page content sequences and 
non-inline structure elements) should be avoided since otherwise Reflow may fail.
>If an activated item contains only content, but no structure children, Reflow may 
fail, especially if the item is activated on another page. This problem can be avoided 
by wrapping the activated item with a non-inline Span tag.
>Acrobat cannot reflow pages with form fields, and will display a warning in this case.
>Acrobat 9 cannot reflow pages with digital signature fields, and will display a warn-
ing in this case.
>Every reflow problem disables the reflow feature and disables its menu item.
Acrobat’s Accessibility Checker. Acrobat’s accessibility checker can be used to deter-
mine the suitability of Tagged PDF documents for consumption with assisting technol-
ogy such as a screenreader. Some hints:
>In order to make form fields accessible, use the tooltip option of PDF_create_field() 
and PDF_create_fieldgroup().
>Acrobat 7: If the Lbl tag is set within the TOCI tag (as actually described in Adobe’s PDF 
reference) the Accessibility Checker in Acrobat7 will warn that the Lbl tag is not set 
within an LI tag.
>If a page contains annotations, Acrobat reports that »tab order may be inconsistent 
with the structure order«.
Export to other formats with Acrobat. Tagged PDF can significantly improve the re-
sult of saving PDF documents in formats such as XML or RTF with Acrobat. 
>If an imported PDF page has the Form tag, the text provided with the ActualText op-
tion will be exported to other formats in Acrobat, while the text provided with the 
Alt tag will be ignored. However, the Read Aloud feature works for both options.
>The content of a NonStruct tag will not be exported to HTML4.01 CSS1.0 (but it will be 
used for HTML3.2 export).
>Alternate text should be supplied for ILSEs (such as CodeQuote, or Reference). If the 
Alt option is used, Read Aloud will read the provided text, but the real content will be 
XImage.Raster for .NET, Comprehensive .NET RasterImage SDK
resolution printing; More about Image Saving & Printing Create thumbnail directly in image. provide powerful & profession imaging controls, PDF document, image
pdf files thumbnail preview; create thumbnail jpeg from pdf
VB.NET Image: How to Create Visual Basic .NET Windows Image Viewer
image, rotating and flipping an image, printing & saving including png, jpeg, gif, tiff, bmp, PDF, and Word You can accurately define the size and location of
how to create a thumbnail of a pdf document; thumbnail view in for pdf files
224
Chapter 9:  Generating various PDF Flavors
exported to other formats. If the ActualText option is used, the provided text will be 
used both for reading and exporting.
Acrobat’s Read Aloud Feature. Tagged PDF will enhance Acrobat’s capability to read 
text aloud.
>When supplying Alt or ActualText it is useful to include a space character at the begin-
ning. This allows the Read Aloud feature to distinguish the text from the preceding 
sentence. For the same reason, including a ’.’ character at the end may also be useful. 
Otherwise Read Aloud will try to read the last word of the preceding sentence in 
combination with the first word of the alternate text.
VB.NET Image: How to Draw Annotation on Doc Images with Image SDK
and bmp) or documents (like multi-page TIFF, Microsoft Office Word and PDF file You can freely control the annotation shapes, the outline size (width and height
create thumbnail from pdf c#; print pdf thumbnails
VB.NET Image: VB.NET Code to Create Watermark on Images in .NET
font type "Times New Roman", size "16", and style System.IO Imports System.Drawing. Printing Imports RasterEdge & profession imaging controls, PDF document, tiff
how to create a thumbnail of a pdf document; enable pdf thumbnails in
10.1  Installing the PDFlib Block Plugin n 225
10Variable Data and Blocks
PDFlib supports a template-driven PDF workflow for variable data processing. Using the 
concept of blocks, imported pages can be populated with variable amounts of single- or 
multi-line text, images, or PDF graphics which can be pulled from an external source. 
This can be used to easily implement applications which require customized PDF docu-
ments, for example:
>mail merge
>flexible direct mailings
>transactional and statement processing
>business card personalization
Note Block processing requires the PDFlib Personalization Server (PPS). Although PPS is contained in 
all commercial PDFlib packages, you must purchase a license key for PPS; a PDFlib or 
PDFlib+PDI license key is not sufficient. The PDFlib Block plugin for Adobe Acrobat is required 
for creating blocks in PDF templates interactively.
Cookbook Code samples regarding variable data and blocks can be found in the blocks category of the 
PDFlib Cookbook.
10.1Installing the PDFlib Block Plugin
The Block plugin and the PDF form field conversion plugin work with Acrobat 7/8/9 
Standard and Professional on Windows and Mac as well as Acrobat 9 Pro Extended on 
Windows. The plugins don’t work with Acrobat Elements or any version of Acrobat 
Reader/Adobe Reader.
Note The plugins contain multiple language versions of the user interface, and will automatically 
use the same interface language as the Acrobat application if possible. If the plugin does not 
support the native Acrobat language the English user interface will be used instead.
Installing the PDFlib Block plugins for Acrobat on Windows. To install the PDFlib Block 
plugin and the PDF form field conversion plugin in Acrobat 7/8/9, the plugin files must 
be copied to a subdirectory of the Acrobat plugin folder. This is done automatically by 
the plugin installer, but can also be done manually. The plugin files are called Block.api 
and AcroFormConversion.api. A typical location of the plugin folder looks as follows:
C:\Program Files\Adobe\Acrobat 9.0\Acrobat\plug_ins\PDFlib Block Plugin
Installing the PDFlib Block plugins for Acrobat 7/8/9 on the Mac. With Acrobat 7/8/9 
the plugin folder will not be visible in the Finder. Instead of dragging the plugin files to 
the plugin folder use the following steps (make sure that Acrobat is not running):
>Extract the plugin files to a folder by double-clicking the disk image.
>Locate the Acrobat application icon in the Finder. It is usually located in a folder 
which has a name similar to the following:
/Applications/Adobe Acrobat 9.0 Professional
>Single-click on the Acrobat application icon and select File, Get Info.
>In the window that pops up click the triangle next to Plug-ins.
C# Image: How to Draw Text on Images within Rasteredge .NET Image
such as adjusting text font size, color, style and System.IO; using System.Drawing. Printing; using RasterEdge & profession imaging controls, PDF document, tiff
generate pdf thumbnails; show pdf thumbnails in
VB.NET Image: How to Create New Images Using VB.NET Codes in .NET
the complete VB.NET sample codes for printing a high settings like image color and size according to powerful & profession imaging controls, PDF document, tiff
pdf no thumbnail; pdf thumbnail viewer
226
Chapter 10:  Variable Data and Blocks
>Click Add... and select the PDFlib Block PluginAcroX folder (where X designates your 
Acrobat version) from the folder which has been created in the first step. Note that 
after installation this folder will not immediately show up in the list of plugins, but 
only when you open the info window next time.
Troubleshooting. If the PDFlib Block plugin doesn’t seem to work check the following:
>Make sure that in Edit, Preferences, [General...], General the box Use only certified 
plug-ins is unchecked. The plugins will not be loaded if Acrobat is running in Certi-
fied Mode.
>Some PDF forms created with Adobe Designer may prevent the Block plugin as well 
as other Acrobat plugins from working properly since they interfere with PDF’s in-
ternal security model. For this reason we suggest to avoid Designer’s static PDF 
forms, and only use dynamic PDF forms as input for the Block plugin.
VB.NET Image: Web Image and Document Viewer Creation & Design
document pages with zero footprint and thumbnail preview support Basic project is capable of printing current image toolkit to print bitonal images, PDF, and so
pdf thumbnails in; show pdf thumbnail in
VB.NET Image: Compress & Decompress Document Image; RasterEdge .
System.IO Imports System.Drawing.Printing Imports RasterEdge decompressing: reduce Word document size according to Scanned PDF encoding and decoding: compress a
pdf thumbnail generator; pdf thumbnail
10.2  Overview of the PDFlib Block Concept t 227
10.2Overview of the PDFlib Block Concept
10.2.1Complete Separation of Document Design and Program Code
PDFlib data blocks make it easy to place variable text, images, or graphics on imported 
pages. In contrast to simple PDF pages, pages containing data blocks intrinsically carry 
information about the required processing which will be performed later on the server 
side. The PDFlib block concept completely separates the following tasks:
>A designer creates the page layout, and specifies the location of variable text and im-
age elements along with relevant properties such as font size, color, or image scaling. 
After creating the layout as a PDF document, the designer uses the PDFlib Block plug-
in for Acrobat to specify variable data blocks and their associated properties.
>A programmer writes code to connect the information contained in PDFlib blocks on 
imported PDF pages with dynamic information, e.g., database fields. The program-
mer doesn’t need to know any details about a block (whether it contains a name or a 
ZIP code, the exact location on the page, its formatting, etc.) and is therefore inde-
pendent from any layout changes. PDFlib will take care of all block-related details 
based on the block properties found in the file.
In other words, the code written by the programmer is »data-blind« – it is generic and 
does not depend on the particulars of any block. For example, the designer may decide 
to use the first name of the addressee in a mailing instead of the last name. The generic 
block handling code doesn’t need to be changed, and will generate correct output once 
the designer changed the block properties with the Acrobat plugin to use the first name 
instead of the last name.
10.2.2Block Properties
The behavior of blocks can be controlled with block properties. The properties are as-
signed to a block with the PDFlib Block plugin for Acrobat.
Standard block properties. PDFlib blocks are defined as rectangles on the page which 
are assigned a name, a type, and an open set of properties which will later be processed 
on the server side. The name is an arbitrary string which identifies the block, such as 
firstnamelastname, or zipcode. PDFlib supports the following kinds of blocks:
>Type Text means that the block will hold one or more lines of textual data. Multi-line 
text will be formatted with the Textflow feature. Textflow blocks can be linked so 
that one block holds the overflow text of the previous block (see Section , »Linking 
multiple Textflow blocks«, page 238).
>Type Image means that the block will hold a raster image. This is similar to importing 
a TIFF or JPEG file in a DTP application.
>Type PDF means that the block will hold arbitrary PDF graphics imported from a page 
in another PDF document. This is similar to importing an EPS graphic in a DTP appli-
cation.
A block may carry a number of standard properties depending on its type. Properties 
can be created and modified with the PDFlib Block Plugin (see Section 10.3.2, »Editing 
Block Properties«, page 232). A full list of standard block properties can be found in Sec-
tion 10.5, »Standard Properties for Automated Processing«, page 240. For example, a text 
block may specify the font and size of the text, an image or PDF block may specify the 
228
Chapter 10:  Variable Data and Blocks
scaling factor or rotation. For each type of block the PDFlib API offers a dedicated func-
tion for processing the block. These functions search an imported PDF page for a block 
by its name, analyze its properties, and place some client-supplied data (text, raster im-
age, or PDF page) on the new page according to the corresponding block properties.
Cookbook A full code sample for querying the properties of blocks contained in an imported PDF can be 
found in the Cookbook topic blocks/query_block_properties.
Custom block properties. Standard block properties make it possible to quickly imple-
ment variable data processing applications, but these are limited to the set of properties 
which are internally known to PDFlib and can automatically be processed. In order to 
provide more flexibility, the designer may also assign custom properties to a block. 
These can be used to extend the block concept in order to match the requirements of 
the most demanding variable data processing applications.
There are no rules for custom properties since PDFlib will not process custom prop-
erties in any way, except making them available to the client. The client code can exam-
ine the custom properties and act in whatever way it deems appropriate. Based on some 
custom property of a block the code may make layout-related or data-gathering deci-
sions. For example, a custom property for a scientific application could specify the 
number of digits for numerical output, or a database field name may be defined as a 
custom block property for retrieving the data corresponding to this block.
10.2.3Why not use PDF Form Fields?
Experienced Acrobat users may ask why we implemented a new block concept for 
PDFlib, instead of relying on the established form field scheme available in PDF. The pri-
mary distinction is that PDF form fields are optimized for interactive filling, while 
PDFlib blocks are targeted at automated filling. Applications which need both interac-
tive and automated filling can easily achieve this by using a feature which automatical-
ly converts form fields to blocks (see Section 10.3.4, »Converting PDF Form Fields to 
PDFlib Blocks«, page 234).
Although there are many parallels between both concepts, PDFlib blocks offer sever-
al advantages over PDF form fields as detailed in Table 10.1.
Table 10.1 1 Comparison of PDF form fields and PDFlib blocks
feature
PDF form fields
PDFlib blocks
design objective
for interactive use
for automated filling
typographic features (beyond 
choice of font and font size)
kerning, word and character spacing, underline/
overline/strikeout
font control
font embedding
font embedding and subsetting, encoding
text formatting controls
left-, center-, right-aligned
left-, center-, right-aligned, justified; various for-
matting algorithms and controls; inline options 
can be used to control the appearance of text
change font or other text attributes 
within text
yes
merged result is integral part of PDF 
page description
yes
users can edit merged field contents s yes
no
10.2  Overview of the PDFlib Block Concept t 229
extensible set of properties
yes (custom block properties)
use image files for filling
BMP, CCITT, GIF, PNG, JPEG, JPEG2000, TIFF
color support
RGB
grayscale, RGB, CMYK, Lab, spot color (HKS and 
Pantone spot colors integrated in the Block plugin)
PDF/X- and PDF/A-conforming
PDF/X: no; PDF/A: restricted d yes (both template with blocks and merged results)
graphics and text properties can be 
overridden upon filling
yes
Text blocks can be linked
yes
Table 10.1 1 Comparison of PDF form fields and PDFlib blocks
feature
PDF form fields
PDFlib blocks
230
Chapter 10:  Variable Data and Blocks
10.3Using the PDFlib Block Plugin to create Blocks
10.3.1Creating Blocks interactively
Activating the PDFlib Block tool. The PDFlib Block plugin for creating PDFlib blocks is 
similar to the form tool in Acrobat. All blocks on the page will be visible when the block 
tool is active. When another Acrobat tool is selected the blocks will be hidden, but they 
are still present. You can activate the block tool in several ways:
>by clicking the block icon 
in Acrobat’s Advanced Editing toolbar;
>via the menu item PDFlib Blocks, PDFlib Block Tool;
>by using the keyboard shortcut P; make sure to enable Edit, Preferences, [General...], 
General, Use single key accelerators to access tools, which is disabled by default (not re-
quired in Acrobat5)
Creating and modifying blocks. Once you activated the block tool you can simply drag 
the cross-hair pointer to create a block at the desired position on the page and the de-
sired size. Blocks will always be rectangular with edges parallel to the page edges. When 
you create a new block the block properties dialog appears where you can edit various 
properties of the block (see Section 10.3.2, »Editing Block Properties«, page 232). The 
block tool will automatically create a block name which can be changed in the proper-
ties dialog. Block names must be unique within a page. You can change the block type in 
the top area to one of Text, Image, or PDF. The General and Custom tabs will always be 
available, while only one of the Text, Image, and PDF tabs will be active at a time depend-
ing on the chosen block type. The Textflow tab will only be present for blocks of type text 
if the textflow property is true. Another tab labelled Tabs (tabulator positions) will only 
be available if the hortabmethod property in the Textflow tab has been set to ruler.
Note After you added blocks or made changes to existing blocks in a PDF, use Acrobat’s »Save as...« 
Command (as opposed to »Save«) to achieve smaller file sizes.
Note When using the Acrobat plugin Enfocus PitStop to edit documents which contain PDFlib blocks 
you may see the message »This document contains PieceInfo from PDFlib. Press OK to continue 
editing or Cancel to abort.« This message can be ignored; it is safe to click OK in this situation.
Selecting blocks. Several block operations, such as copying or moving, work with se-
lected blocks. You can select one or more blocks with the block tool as follows:
>To select a single block simply click on it with the mouse.
>Hold down the Shift key while clicking on another block to extend the selection.
>Press Ctrl-A (on Windows) or Cmd-A (on the Mac) or Edit, Select All to select all blocks 
on a page.
The context menu. When one or more blocks are selected you can open the context 
menu to quickly access block-related functions (which are also available in the PDFlib 
Blocks menu). To open the context menu, click on the selected block(s) with the right 
mouse button on Windows, or Ctrl-click the block(s) on the Mac. 
For example, to delete a block, select it with the block tool and press the Delete key, or 
use Edit, Delete in the context menu.
Fine-tuning block size and position. Using the block tool you can move one or more 
selected blocks to a different position. Hold down the Shift key while dragging a block to 
Documents you may be interested
Documents you may be interested