best pdf library c# : Can reader edit pdf forms software Library project winforms .net asp.net UWP PDFlib-manual12-part1869

5.3  Placing Images and Imported PDF Pages 121
5.3 Placing Images and Imported PDF Pages
The PDF_fit_image( ) function for placing raster image and templates, as well as PDF_fit_
pdi_page( ) for placing imported PDF pages offer a wealth of options for controlling the 
placement on the page. This section demonstrates the most important options by look-
ing at some common application tasks. A complete list and descriptions of all options 
can be found in Table 7.24.
Embedding raster images is easy to accomplish with PDFlib. The image file must first 
be loaded with PDF_load_image( ). This function returns an image handle which can be 
used along with positioning and scaling options in PDF_fit_image( ).
Embedding imported PDF pages works along the same line. The PDF page must be 
opened with PDF_open_pdi_page( ) to retrieve a page handle for use in PDF_fit_pdi_
page( ). The same positioning and scaling options can be used as for raster images.
All samples in this section work the same for raster images, templates, and imported 
PDF pages. Although code samples are only presented for raster images we talk about 
placing objects in general. Note that before calling any of the fit functions a call to PDF_
load_image( ) or PDF_open_pdi( ) and PDF_open_pdi_page( ) must be issued. For the sake of 
simplicity these calls are not reproduced here.
5.3.1 Scaling, Orientation, and Rotation
Simple Placing. Let’s start with the simplest case (see Figure 5.1): an object will be 
placed at a certain position it its original size:
PDF_fit_image(p, image, 80, 100, "");
In this code fragment the object will be placed with its lower left corner at the point 
(80, 100) in the user coordinate system. This point is called the reference point. The op-
tion list (the last function parameter) is empty. This means the object will be place in its 
original size at the provided reference point.
Placing with Scaling. The following variation is also very easy to use (see Figure 5.2) We 
place the object as in the previous example, but will modify the object’s scaling:
PDF_fit_image(p, image, 80, 100, "scale 0.5");
Fig. 5.1
Simple placing
Fig. 5.2
Placing with scaling
Can reader edit pdf forms - extract form data from PDF in C#.net, ASP.NET, MVC, Ajax, WPF
Help to Read and Extract Field Data from PDF with a Convenient C# Solution
vb extract data from pdf; c# read pdf form fields
Can reader edit pdf forms - VB.NET PDF Form Data Read library: extract form data from PDF in vb.net, ASP.NET, MVC, Ajax, WPF
Convenient VB.NET Solution to Read and Extract Field Data from PDF
pdf data extraction tool; flatten pdf form in reader
122
Chapter 5:  Importing and Placing Objects
This code fragment places the object with its lower left corner at the point (80, 100) in 
the user coordinate system. In addition, the object will be scaled in x and y direction by a 
scaling factor of 0.5, which makes it appear at 50 percent of its original size.
Placing with orientation. In the next code fragment we will orientate the object in di-
rection west (see Figure 5.3):
PDF_fit_image(p, image, 80, 100, "scale 0.5 orientate west");
This code fragment orientates the object towards western direction (90 degrees coun-
terclockwise), and then translates the object’s lower left corner (after applying the 
orientate option) to the reference point (x, y). The object will be rotated in itself.
Placing with rotation. Rotating an object (see Figure 5.4) works similarly to orienta-
tion. However, it not only affects the placed object but the whole coordinate system. Be-
fore placing the object the coordinate system will be rotated at the reference point (x, y) 
by 90 degrees counterclockwise. The rotated object’s lower right corner (which is the 
unrotated object’s lower left corner) will end up at the reference point. The function call 
to achieve this looks as follows:
PDF_fit_image(p, image, 80, 100, "scale 0.5 rotate 90");
Since there is no translation in this case the object will be partially moved outside the 
page.
Comparing orientation and rotation. Orientation and rotation are quite similar con-
cepts, but are different nevertheless, and you should be aware of these differences. Fig-
ure 5.5 and Figure 5.6 demonstrate the principal difference between the orientate and 
rotate options:
>The orientate option rotates the object at the reference point (x, y) and subsequently 
translates it. This option supports the direction keywords north, east, west, and south.
>The rotate option rotates the object at the reference point (x, y) without any transla-
tion. This option supports arbitrary rotation angles. These have to be specified nu-
merically in degrees (a full circle has 360 degrees).
Fig. 5.3
Placing with orientation
Fig. 5.4
Placing with rotation
VB.NET TIFF: Read, Edit & Process TIFF with VB.NET Image Document
Read, View and Edit TIFF File by Applying VB modes and very extraordinary TIFF barcode reader and creator add give detailed explanations of what can RasterEdge VB
exporting data from pdf to excel; exporting data from excel to pdf form
C# PDF Converter Library SDK to convert PDF to other file formats
C#.NET PDF to SVG Conversion. Various image forms can be converted from PDF document, including Jpeg, Png, Bmp, Gif images, .NET Graphics, and REImage.
extract data from pdf form; extract data from pdf form fields
5.3  Placing Images and Imported PDF Pages 123
5.3.2 Adjusting the Page Size
In the next example (see Figure 5.7) we will automatically adjust the page size to the ob-
ject’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 be exactly the object’s 
size, or somewhat larger or smaller. When enlarging the page size (see Figure 5.7) some 
border will be kept around the image; when 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:
PDF_fit_image(p, image, 0, 0, "adjustpage");
The next code fragment makes the page size larger by 40 units in x and y direction than 
the object, resulting in some border around the object:
PDF_fit_image(p, image, 40, 40, "adjustpage");
The next code fragment makes the page size smaller by 40 units in x and y direction 
than the object. The object will be clipped at the page borders, and some area within the 
object (with a width of 40 units) will be invisible:
PDF_fit_image(p, image, -40, -40, "adjustpage");
Fig. 5.5
The orientate option
Fig. 5.6
The rotate option
Fig. 5.7
Adjusting the page size. Left to 
right: exact, enlarge, shrink
C# PDF: PDF Document Viewer & Reader SDK for Windows Forms
On this page, besides brief introduction to RasterEdge C#.NET PDF document viewer & reader for Windows Forms application, you can also see the following aspects
fill in pdf form reader; extract data from pdf file
VB.NET PDF Converter Library SDK to convert PDF to other file
Various image forms can be converted from PDF document, including Png, Bmp, Gif images and .NET Graphics. VB.NET demo codes are provided for your reference.
extracting data from pdf forms to excel; how to fill out a pdf form with reader
124
Chapter 5:  Importing and Placing Objects
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 boxsize, fitmethod and position 
options.
Fitting an object to a box. First, let’s place a company logo in the upper right area of 
the page (see Figure 5.8). The size of the target rectangle where the logo is to appear is 
fixed. However, we don’t know how to scale the logo so that it fits into the box while 
avoiding any distortion (the ratio of width and height must not be changed). The follow-
ing statement does the job:
PDF_fit_image(p, image, 350, 750, "boxsize {200 100} position 0 fitmethod meet");
This code fragment places the lower left corner of a box which is 200 units wide and 100 
units high (boxsize {200 100}) at the point (350, 750). The object’s lower left corner will be 
placed at the box’s lower left corner (position 0). The object will be scaled without any 
distortion to make its height and/or width exactly fit into the box (fitmethod meet).
This concept offers a broad range of variations. For example, the position option can 
be used to specify which point within the object is to be used as the reference point 
(specified as a percentage of width and height). The position option will also specify the 
reference point within the target box. If both width and height position percentages are 
identical it is sufficient to specify a single value. For example, position 50 can be used to 
select the object’s and box’s midpoint as reference point for placing the object.
Clipping an object when fitting it to the box. Using another flavor of the fitmethod op-
tion we can clip the object such that it exactly fits into the target box (see Figure 5.9). In 
this case the object won’t be scaled:
PDF_fit_image(p, image, 50, 80, "boxsize {100 400} position 50 fitmethod clip");
This code fragment places a box of width 100 and heigth 400 (boxsize {100 400}) at the 
coordinates (50, 80). The object will be placed in its original size in the middle of the box 
(position 50), and will be cropped if it exceeds the box (fitmethod clip).
Fig. 5.8
Fitting an object
to the box
Fig. 5.9
Clipping an object when 
fitting it to the box
VB.NET Word: .NET Word Reader & Processor Control SDK | Online
Word Reader SDK to Read, View, Process & Edit Word offers developers comprehensive APIs to read, edit & process generating & writing add-on can help developers
extract data from pdf c#; saving pdf forms in acrobat reader
C# Imaging - Scan Barcode Image in C#.NET
C# Barcode Image Reader - Barcode Types. You can get free sample C# codes for barcodes scanning in .NET Recognize PDF-417 2D barcode in .NET WinForms & ASP.NET
export pdf form data to excel; extracting data from pdf forms
5.3  Placing Images and Imported PDF Pages 125
Adjusting an object to the page. Adjusting an object to a given page size can easily be 
accomplished by choosing the page as target box for placing the object. The following 
statement uses an A4-sized page with dimensions 595 x 842:
PDF_fit_image(p, image, 0, 0, "boxsize {595 842} position 0 fitmethod slice");
In this code fragment a box is placed at the lower left corner of the page. The size of the 
box equals the size of an A4 page. The object is placed in the lower left corner of the box 
and scaled proportionally until it fully covers the box and therefore the page. If the ob-
ject exceeds the box it will be cropped. Note that fitmethod slice results in the object be-
ing scaled (as opposed to fitmethod clip which doesn’t scale the object). Of course the 
position and fitmethod options could also be varied in this example.
Fitting a logo to the page. How can we achieve the rotated company logo in Figure 
5.10? It is rotated by 90 degrees counterclockwise, starts in the lower left corner, and 
covers the full height of the page:
PDF_fit_image(p, image, 0, 0, "boxsize {595 842} orientate west fitmethod meet");
The reference point is (0, 0) and orientation is specified as orientate west. In order to 
make the logo cover the full page height we choose the box height to be equal to the 
page height (842), and choose a large enough value for the box’s width (595). The logo’s 
proportions should not be changed, therefore we choose fitmethod meet.
Fig. 5.10
Fitting a logo to the page
C# PDF: How to Create PDF Document Viewer in C#.NET with
web service application, Windows Forms application and mobile application. The PDF document viewer & reader created by this C#.NET imaging toolkit can be used
extract data out of pdf file; extracting data from pdf into excel
C# PDF File Compress Library: Compress reduce PDF size in C#.net
in .NET class applications, such as ASP.NET web site and Windows Forms application. Using this C#.NET PDF document compressing control, you can easily and
make pdf form editable in reader; extract pdf data to excel
126
Chapter 5:  Importing and Placing Objects
C# Create PDF Library SDK to convert PDF from other file formats
developers can easily use this professional PDF document generating SDK in all .NET developing applications, including ASP.NET web services and Windows Forms
html form output to pdf; edit pdf form in reader
C# Word - Word Conversion in C#.NET
Various image forms can be converted from Word document, including Jpeg control enable users to convert PDF to Word ODT file also can be converted to Word with
extract data from pdf table; extract data from pdf to excel online
6.1  Overview of the PDFlib Block Concept 127
6Variable 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 text, im-
ages, or PDF graphics which can be pulled from an external source. This can be used to 
easily implement applications which require customized PDF documents, for example:
>mail merge
>flexible direct mailings
>transactional and statement processing
>business card personalization
Note The block processing features discussed in this chapter require the PDFlib Personalization Server 
(PPS). Although PPS is integrated in all precompiled editions of PDFlib, you must purchase a li-
cense 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.
6.1 Overview of the PDFlib Block Concept
6.1.1 Complete Separation of Document Design and Program Code
PDFlib data blocks make it easy to place variable text over 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 some dynamic information, e.g., database fields. The pro-
grammer 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 in-
dependent 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«, i.e., 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.
Example: adding variable text to a template. Adding dynamic text to a PDF template 
is a very common task. The following code fragment will open a page in an input PDF 
document (the template), place it on the output page, and fill some variable text into a 
text block called firstname:
doc = PDF_open_pdi(p, filename, "", 0);
if (doc == -1) {
printf("Couldn't open PDF template '%s'\n", filename);
128
Chapter 6:  Variable Data and Blocks
return (1);
}
page = PDF_open_pdi_page(p, doc, pageno, "");
if (page == -1) {
printf("Couldn't open page %d of PDF template '%s'\n", pageno, filename);
return (2);
}
PDF_begin_page(p, width, height);
PDF_fit_pdi_page(p, page, 0.0, 0.0, "");
PDF_fill_textblock(p, page, "firstname", "Serge", 0, "encoding winansi");
PDF_close_pdi_page(p, page);
PDF_end_page(p);
6.1.2 Block 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 
firstname, lastname, or zipcode. PDFlib supports the following kinds of blocks:
>Type Text means that the block will hold some textual data.
>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. For example, 
a text block may specify the font and size of the text, an image or PDF block may specify 
the scaling factor or rotation. For each type of block the PDFlib API offers a dedicated 
function 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, ras-
ter image, or PDF page) on the new page according to the corresponding block proper-
ties.
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.
6.1  Overview of the PDFlib Block Concept 129
Overriding block properties. In certain situations the programmer would like to use 
only some of the properties provided in a block definition, but override some other 
properties with custom values. This can be useful in various situations:
>The scaling factor for an image or PDF page will be calculated instead of taken from 
the block definition.
>Change the block coordinates programmatically, for example when generating an 
invoice with a variable number of data items.
>Individual spot color names could be supplied in order to match the requirements of 
individual customers in a print shop application.
Property overrides can be achieved by supplying property names and the correspond-
ing values in the option list of all PDF_fill_*block( ) functions as follows:
PDF_fill_textblock(p, page, "firstname", "Serge", 0, "fontsize 12");
This will override the block’s internal fontsize property with the supplied value 12. Al-
most all names of general properties can be used as options, as well as those specific to a 
particular block type. For example, the underline option is only allowed for PDF_fill_
textblock( ), while the scale option is allowed for both PDF_fill_imageblock( ) and PDF_fill_
pdfblock( ) since scale is a valid property for both image and PDF blocks.
Property overrides apply only to the respective function calls; they will not be stored 
in the block definition.
Coordinate systems. The coordinates describing a block reference the PDF default co-
ordinate system. When the page containing the block is placed on the output page, sev-
eral positioning and scaling options may be supplied to PDF_fit_pdi_page( ). These pa-
rameters are taken into account when the block is being processed. This makes it 
possible to place a template page on the output page multiply, every time filling its 
blocks with data. For example, a business card template may be placed four times on an 
imposition sheet. The block functions will take care of the coordinate system transfor-
mations, and correctly place the text for all blocks in all invocations of the page. The 
only requirement is that the client must place the page and then process all blocks on 
the placed page. Then the page can be placed again at a different location on the output 
page, followed by more block processing operations referring to the new position, and 
so on.
Note The Block plugin will display the block coordinates differently from what is stored in the PDF 
file. The plugin uses Acrobat’s convention which has the coordinate origin in the top left corner 
of the page, while the internal coordinates (those stored in the block) use PDF’s convention of 
having the origin in the bottom left corner of the page.
6.1.3 Why 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, and PDFlib 
blocks are targeted at automated filling. Applications which need both interactive and 
automated filling can easily achieve this by using a feature which automatically con-
verts form fields to blocks (see Section 6.2.4, »Converting PDF Form Fields to PDFlib 
Blocks«, page 135).
130
Chapter 6:  Variable Data and Blocks
Although there are many parallels between both concepts, PDFlib blocks offer sever-
al advantages over PDF form fields as detailed in Table 6.1.
Table 6.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
merged result is integral part of PDF 
page description
no
yes
users can edit merged field contents yes
no
extensible set of properties
no
yes (custom block properties)
color support
RGB
grayscale, RGB, CMYK, spot color, Lab
PDF/X compatible
no
yes (both template with blocks and merged results)
graphics and text properties can be 
overridden upon filling
no
yes
Documents you may be interested
Documents you may be interested