best pdf library c# : Make pdf form editable in reader software control project winforms web page html UWP PDFlib-manual14-part1871

6.4  Querying Block Names and Properties 141
6.4 Querying Block Names and Properties
In addition to automatic block processing PDFlib supports some features which can be 
used to enumerate block names and query standard and custom properties.
Finding the number and names of Blocks. The client code must not even know the 
names or number of the blocks on an imported page since these can also be queried. The 
following statement returns the number of blocks on the page:
blockcount = PDF_get_pdi_value(p, "vdp/blockcount", doc, page, 0);
The following statement returns the name of block number 5 on the page (block count-
ing starts at 0), or an empty string if no such block exists (however, an exception will be 
thrown if the pdiwarning parameter is set to true):
blockname = PDF_get_pdi_parameter(p, "vdp/Blocks[5]/Name", doc, page, 0, &len);
The returned block name can further be used to automatically fill the blocks using 
PDFlib’s fill functions, or query block properties, or populate the block with text, image, 
or PDF content.
In the path syntax for addressing block properties the following expressions are 
equivalent, assuming that the block with the sequential <number> has its Name proper-
ty set to <blockname>:
Blocks[<number>]/
Blocks/<blockname>/
Finding Block coordinates. The two coordinate pairs (llx, lly) and (urx, ury) describing 
the lower left and upper right corner of a block named foo can be queried as follows:
llx = PDF_get_pdi_value(p, "vdp/Blocks/foo/Rect[0]", doc, page, 0);
lly = PDF_get_pdi_value(p, "vdp/Blocks/foo/Rect[1]", doc, page, 0);
urx = PDF_get_pdi_value(p, "vdp/Blocks/foo/Rect[2]", doc, page, 0);
ury = PDF_get_pdi_value(p, "vdp/Blocks/foo/Rect[3]", doc, page, 0);
Note that these coordinates are provided in the default user coordinate system (with 
the origin in the bottom left corner, possibly modified by the page’s CropBox), while the 
Block plugin displays the coordinates according to Acrobat user interface coordinate 
system with an origin in the top left corner of the page. Also note that the topdown pa-
rameter is not taken into account when querying block coordinates.
Querying custom properties. Custom properties can be queried as in the following ex-
ample, where the property zipcode is queried from a block named b1:
zip = PDF_get_pdi_parameter(p, "vdp/Blocks/b1/Custom/zipcode", doc, page, 0, &len);
Name space for custom properties. In order to avoid confusion when PDF documents 
from different sources are exchanged, it is recommended to use an Internet domain 
name as a company-specific prefix in all custom property names, followed by a colon ’:’ 
and the actual property name. For example, ACME corporation would use the following 
property names:
acme.com:digits
acme.com:refnumber
Make pdf form editable in reader - 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
pdf data extraction; how to make a pdf form fillable in reader
Make pdf form editable in reader - 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
flatten pdf form in reader; pdf form save in reader
142
Chapter 6:  Variable Data and Blocks
Since standard and custom properties are stored differently in the block, standard 
PDFlib property names (as defined in Section 6.3, »Standard Properties for automated 
Processing«, page 137) will never conflict with custom property names.
C# PDF Convert to Text SDK: Convert PDF to txt files in C#.net
to convert target PDF document to other editable file formats should be noted here is that our PDF to text Thus, please make sure you have installed VS 2005 or
extract data from pdf into excel; pdf data extractor
VB.NET Image: Add Callout Annotation on Document and Image in VB.
document and image formats, such as PDF, Word, TIFF mainly contains two parts-that are editable text area guide that tells you how to make callout annotation
pdf data extraction open source; extract table data from pdf
6.5  PDFlib Block Specification 143
6.5 PDFlib Block Specification
The PDFlib Block syntax is fully compliant with the PDF Reference, which specifies an 
extension mechanism which allows applications to store private data attached to the 
data structures comprising a PDF page. A detailed description of the PDFlib block syntax 
is provided here for the benefit of users who wish to create PDFlib blocks by other 
means than the PDFlib block plugin. Plugin users can safely skip this section.
6.5.1 PDF Object Structure for PDFlib Blocks
The page dictionary contains a /PieceInfo entry, which has a dictionary as value. This dic-
tionary contains the key /PDFlib with an application data dictionary as value. The appli-
cation data dictionary contains two standard keys listed in Table 6.8.
A Block list is a dictionary containing general information about block processing, plus 
a list of all blocks on the page. Table 6.9 lists the keys in a block list dictionary.
Data types for block properties. Properties support the same data types as option lists 
(see Section 3.1.4, »Option Lists«, page 44) except handles. Table 6.10 details how these 
types are mapped to PDF data types.
Table 6.8 Entries in a PDFlib application data dictionary
Key
type
value
LastModified date string
(Required) The date and time when the blocks on the page were created or most 
recently modified.
Private
dictionary
(Required) A block list (see Table 6.9)
Table 6.9 Entries in a block list dictionary
Key
type
value
Version
number
(Required) The version number of the block specification to which the file 
complies. This document describes version x of the block specification.
Blocks
dictionary
(Required) Each key is a name object containing the name of a block; the corres-
ponding value is the block dictionary for this block (see Table 6.11). The /Name key 
in the block dictionary must be identical to the block’s name in this dictionary.
PluginVersion
string
(Required unless the pdfmark key is present
1
) A string containing a version identi-
fication of the PDFlib Block plugin which has been used to create the blocks.
1. Exactly one of the PluginVersion and pdfmark keys must be present.
pdfmark
boolean
(Required unless the PluginVersion key is present
1
) Must be true if the block list has 
been generated by use of pdfmarks.
Table 6.10 Data types for block properties
block type
PDF type
remarks
boolean
boolean
string
string
keyword
name
It is an error to provide keywords outside the list of keywords supported by a 
particular property.
VB.NET PDF Convert to Text SDK: Convert PDF to txt files in vb.net
VB.NET control for batch converting PDF to editable & searchable users will be able to convert a PDF file or Before you get started, please make sure that you
change font size pdf form reader; how to extract data from pdf file using java
VB.NET Create PDF Library SDK to convert PDF from other file
Create and save editable PDF with a blank page, bookmarks, links Creating a PDF document is a good way to share your ideas because you can make sure that
exporting data from excel to pdf form; extracting data from pdf forms to excel
144
Chapter 6:  Variable Data and Blocks
Block dictionary keys. Block dictionaries may contain the keys in Table 6.11. Only keys 
from one of the Text, Image or PDF groups may be present depending on the /Subtype 
key in the General group.
Example. The following fragment shows the PDF code for two blocks, a text block 
called job_title and an image block called logo. The text block contains a custom property 
called format:
<<
/Contents 12 0 R
/Type /Page
/Parent 1 0 R
/MediaBox [ 0 0 595 842 ]
/PieceInfo << /PDFlib 13 0 R >>
>>
13 0 obj
<<
/Private <<
/Blocks <<
/job_title 14 0 R
float, integer
number
While option lists support both point and comma as decimal separators, PDF 
numbers support only point.
color
array with 
two 
elements
The first element in the array specifies a color space, and the second element 
specifies a color value as follows. The following entries are supported for the first 
element in the array:
/DeviceGray
The second element is a single gray value.
/DeviceRGB
The second element is an array of three RGB values.
/DeviceCMYK
The second element is an array of four CMYK values.
[/Separation/spotname]
The first element is an array containing the keyword /Separation and 
a color name. The second element is a tint value.
[/Lab]
The first element is an array containing the keyword /Lab. The second 
element is an array of three Lab values.
To specify the absence of color the respective property must be omitted.
Table 6.11 Entries in a block dictionary
Key
type
value
General block properties
(Some keys are required) General block properties according to Table 6.3
text-related properties
(Optional) Text-related properties according to Table 6.4
image-related properties
(Optional) Image-related properties according to Table 6.5
PDF-related properties
(Optional) PDF-related properties according to Table 6.6
Custom
dict
(Optional) A dictionary containing key/value pairs for custom properties accor-
ding to Table 6.7.
Internal
dict
(Optional) This key is reserved for private use, and applications should not depend 
on its presence or specific behavior. Currently it is used for maintaining the 
relationship between converted form fields and corresponding blocks.
Table 6.10 Data types for block properties
block type
PDF type
remarks
VB.NET Excel: How to Covert Excel Doc to PDF in VB.NET Application
document is not editable and the Excel document is editable. So when using Excel or PDF document on your for VB.NET programming, you need to make sure whether
extract data from pdf form to excel; c# read pdf form fields
Process Multipage TIFF Images in Web Image Viewer| Online
Export multi-page TIFF image to a PDF; More image viewing & multipage TIFF files in Web Document Viewer, make sure that Load, Save an Editable Multi-page TIFF.
java read pdf form fields; html form output to pdf
6.5  PDFlib Block Specification 145
/logo 15 0 R
>>
/Version 2
/PluginVersion (1.1.0)
>>
/LastModified (D:20030913200730)
>>
endobj
14 0 obj
<<
/Type /Block
/Rect [ 70 740 200 800 ]
/Name /job_title
/Subtype /Text
/fitmethod /auto
/fontname (Helvetica)
/fontsize 12
/Custom << /format 5 >>
>>
endobj
15 0 obj
<<
/Type /Block
/Rect [ 250 700 400 800 ]
/Name /logo
/Subtype /Image
/fitmethod /auto
>>
6.5.2 Generating PDFlib Blocks with pdfmarks
As an alternative to creating PDFlib blocks with the plugin, blocks can be created by in-
serting appropriate pdfmark commands into a PostScript stream, and distilling it to 
PDF. Details of the pdfmark operator are discussed in the Acrobat documentation. The 
following fragment shows pdfmark operators which can be used to generate the block 
definition in the preceding section:
% ---------- Setup for the blocks on a page ----------
[/_objdef {B1} /type /dict /OBJ pdfmark
% Blocks dict
[{ThisPage} <<
/PieceInfo <<
/PDFlib <<
/LastModified (D:20030913200730)
/Private <<
/Version 2
/pdfmark true
/Blocks {B1}
>>
>>
>>
>> /PUT pdfmark
% ---------- text block ----------
[{B1} <<
/job_title <<
VB.NET TIFF: Convert TIFF to HTML Web Page Using VB.NET TIFF
information of TIFF file in a more editable file format This online article aims to make a detailed instruction on to HTML converters, like VB.NET PDF to HTML
extract data from pdf; extract table data from pdf to excel
VB.NET Image: Barcode Generator to Add UPC-A to Image, TIFF, PDF &
REFile.SaveDocumentFile(doc, "c:/upc-a.pdf", New PDFEncoder document, but also we can make a UPC A barcode imaging properties from the following parameter form.
extract data from pdf form fields; saving pdf forms in acrobat reader
146
Chapter 6:  Variable Data and Blocks
/Type /Block
/Name /job_title
/Subtype /Text
/Rect [ 70 740 200 800 ]
/fitmethod /auto
/fontsize 12
/fontname (Helvetica)
/Custom << /format 5 >>
>>
>> /PUT pdfmark
% ---------- image block ----------
[{B1} <<
/logo <<
/Type /Block
/Name /logo
/Subtype /Image
/Rect [ 250 700 400 800 ]
/fitmethod /auto
>>
>> /PUT pdfmark
7.1  Data Types and Naming Conventions 147
7API Reference for PDFlib, PDI, and PPS
The API reference documents all supported functions of PDFlib, PDI (PDF Import) and 
PPS (PDFlib Personalization Server).
7.1 Data Types and Naming Conventions
PDFlib data types. The exact syntax to be used for a particular language binding may 
actually vary slightly from the C syntax shown here in the reference. This especially 
holds true for the PDF document parameter (PDF * in the API reference) which has to be 
supplied as the first argument to almost all PDFlib functions in the C binding, but not 
those bindings which hide the PDF document parameter in an object created by the lan-
guage wrapper.
Table 7.1 details the use of the PDF document type and the string type in all language 
bindings. The data types integer, long, and float are not mentioned since there is an obvi-
ous mapping of these types in all bindings. Please refer to the respective language sec-
tion and the examples in Chapter 2 for more language-specific details.
Naming conventions for PDFlib functions. In the C binding, all PDFlib functions live in 
a global namespace and carry the common PDF_  prefix in their name in order to mini-
mize namespace pollution. In contrast, several language bindings hide the PDF docu-
ment parameter in an object created by the language wrapper. For these bindings, the 
function name given in this API reference must be changed by omitting the PDF_  prefix 
and the PDF * parameter used as first argument. For example, the C-like API description
PDF *p;
PDF_open_file(PDF *p, const char *filename);
translates to the following when the function is used from Java:
pdflib p;
p.open_file(String filename);
Table 7.1 Data types in the language bindings
language binding
p parameter?
PDF_  prefix?
string data type
binary data type
C (also used in
this API reference)
yes
yes
const char *  
1
1. C language NULL string values and empty strings are considered equivalent.
const char *
C++
no
no
string
2
2. NULL string values must not be used in the C++ binding.
char *
Cobol
3
3. See Section 2.2.1, »Special Considerations for Cobol«, page 18 for more information on Cobol data types.
yes
no
4
4. Cobol programs must use abbreviated names for the PDFlib functions.
STRING
STRING
Java
no
no
String
byte[ ]
Perl
yes
yes
string
string
PHP
yes
yes
string
string
Python
yes
yes
string
string
RPG
yes
yes
string, but must add x’00’
data
Tcl
yes
yes
string
byte array
148
Chapter 7:  API Reference for PDFlib, PDI, and PPS
7.2 General Functions
7.2.1 Setup
Table 7.2 lists relevant parameters and values for this section.
Table 7.2 Parameters and values for the setup functions
function
key
explanation
set_parameter compatibility Set PDFlib’s compatibility mode to one of the strings »1.3«, »1.4«, or »1.5« for 
Acrobat 4, 5, or 6. See Section 1.4, »Acrobat Versions and PDFlib Features«, page 16 
for details. This parameter must be set before the first call to PDF_open_*( ). It will 
be ignored if the pdfx parameter is used. Scope: object. Default: »1.4«.
set_parameter
pdfx
Set the PDF/X conformance level to one of »PDF/X-1:2001« , »PDF/X-1a:2001«, 
»PDF/X-3:2002«, or »none« (see Section 3.4, »PDF/X Support«, page 67). Scope: 
object. Default: none
set_parameter flush
Set PDFlib’s flushing strategy to none, page, content, or heavy. See Section 3.1.7, 
»Generating PDF Documents in Memory«, page 50 for details. This parameter is 
only available in the C and C++ language bindings. Scope: any. Default: page
set_parameter
SearchPath
(Not supported on MVS) Relative or absolute path name of a directory containing 
files to be read. The SearchPath can be set multiply; the entries will be 
accumulated and used in least-recently-set order (see Section 3.1.6, »Resource 
Configuration and File Searching«, page 47). Scope: any.
set_parameter prefix
(Deprecated) Resource file name prefix as used in a UPR file. The prefix can be set 
multiply. It contains a slash character plus a path name, which in turn may start 
with a slash. Scope: any.
set_parameter
resourcefile
Relative or absolute file name of the PDFlib UPR resource file. The resource file will 
be loaded immediately. Existing resources will be kept; their values will be 
overridden by new ones if they are set again. Scope: any.
set_parameter asciifile
(Only supported on iSeries and zSeries). Expect text files (PFA, AFM, UPR, enco-
dings) in ASCII encoding. Default: true on iSeries; false on zSeries. Scope: any.
set_parameter
license
Set the license key for PDFlib, PDFlib+PDI, or PPS.The license key can only be set 
once before the first call to PDF_begin_page( ). Scope: object.
set_parameter licensefile
Set the name of a file containing the license keyThe license file can only be set 
once before the first call to PDF_begin_page( ). Scope: object.
set_value
compress
Set the compression parameter to a value from 0–9. This parameter does not 
affect image data handled in pass-through mode. Scope: page, document.
0
no compression
1
best speed
6
default value
9
best compression
get_value
major, minor
revision
Return the major, minor, or revision number of PDFlib, respectively. Scope: any, 
null
1
.
1. May be called with a PDF * argument of NULL or 0.
get_parameter
version
Return the full PDFlib version string in the format <major>.<minor>.<revision>, 
possibly suffixed with additional qualifiers such as beta, rc, etc. Scope: any, null
1
.
get_parameter
scope
Return the name of the current scope (see Table 3.1). Scope: any.
set_parameter
trace
If true, all API function calls will be logged to a trace file. The contents of the trace 
file may be useful for debugging purposes, or may be requested by PDFlib support. 
Scope: any. Default: false.
set_parameter tracefile
Set trace file name. Scope: any, but before enabling tracing. Default: PDFlib.trace.
set_parameter
tracemsg
If tracing is enabled, the supplied message text will be written to the trace file in 
addition to API calls. This may be useful for debugging client code. Scope: any.
7.2  General Functions 149
void PDF_boot(void)
void PDF_shutdown(void)
Boot and shut down PDFlib, respectively.
Scope null
Bindings C: Recommended for the C language binding, although currently not required.
Other bindings: For all other language bindings booting and shutting down is accom-
plished automatically by the wrapper code, and these functions are not available.
PDF *PDF_new(void)
Create a new PDFlib object with default settings.
Details This function creates a new PDFlib object, using PDFlib’s internal default error handling 
and memory allocation routines.
Returns A handle to a PDFlib object which is to be used in subsequent PDFlib calls. If this func-
tion doesn’t succeed due to unavailable memory it will return NULL (in C) or throw an 
exception.
Scope null; this function start object scope, and must always be paired with a matching PDF_
delete( ) call.
Bindings The data type used for the opaque PDFlib object handle varies among language bind-
ings. This doesn’t really affect PDFlib clients, since all they have to do is pass the PDF 
handle as the first argument to all functions.
C: In order to load the PDFlib DLL dynamically at runtime use PDF_new_dl( ) instead (see 
Section 2.4.3, »Using PDFlib as a DLL loaded at Runtime«, page 22). PDF_new_dl( ) will re-
turn a pointer to a PDFlib_api structure filled with pointers to all PDFlib API functions. If 
the DLL cannot be loaded, or a mismatch of major or minor version number is detected, 
NULL will be returned.
C++: this function is not available since it is hidden in the PDF constructor. 
COM, Java: this function is automatically called by the wrapper code, and therefore not 
available.
PDF *PDF_new2(void (*errorhandler)(PDF *p, int errortype, const char *msg),
void* (*allocproc)(PDF *p, size_t size, const char *caller),
void* (*reallocproc)(PDF *p, void *mem, size_t size, const char *caller),
void  (*freeproc)(PDF *p, void *mem),
void   *opaque)
Create a new PDFlib object with client-supplied error handling and memory allocation 
routines.
errorhandler Pointer to a user-supplied error-handling function. The error handler 
will be ignored in PDF_TRY/PDF_CATCH blocks.
allocproc Pointer to a user-supplied memory allocation function.
reallocproc Pointer to a user-supplied memory reallocation function.
150
Chapter 7:  API Reference for PDFlib, PDI, and PPS
freeproc Pointer to a user-supplied free function.
opaque Pointer to some user data which may be retrieved later with PDF_get_
opaque( ).
Returns A handle to a PDFlib object which is to be used in subsequent PDFlib calls. If this func-
tion doesn’t succeed due to unavailable memory it will return NULL (in C) or throw an 
exception.
Details This function creates a new PDFlib object with client-supplied error handling and mem-
ory allocation routines. Unlike PDF_new( ), the caller may optionally supply own proce-
dures for error handling and memory allocation. The function pointers for the error 
handler, the memory procedures, or both may be NULL. PDFlib will use default routines 
in these cases. Either all three memory routines must be provided, or none. 
Scope null; this function starts object scope, and must always be paired with a matching PDF_
delete( ) call. No other PDFlib function with the same PDFlib object must be called after 
calling this function.
Bindings C++: this function is indirectly available via the PDF constructor. Not all function argu-
ments must be given since default values of NULL are supplied. All supplied functions 
must be »C« style functions, not C++ methods.
void PDF_delete(PDF *p)
Delete a PDFlib object and free all internal resources.
Details This function deletes a PDF object and frees all document-related PDFlib-internal re-
sources. Although not necessarily required for single-document generation, deleting 
the PDF object is heavily recommended for all server applications when they are done 
producing PDF. This function must only be called once for a given PDF object. PDF_
delete( ) should also be called for cleanup when an exception occurred. PDF_delete( ) it-
self is guaranteed to not throw any exception. If more than one PDF document will be 
generated it is not necessary to call PDF_delete( ) after each document, but only when 
the complete sequence of PDF documents is done.
Scope any; this function starts null scope, i.e., no more API function calls are allowed.
Bindings C: If the PDFlib DLL has been loaded dynamically at runtime with PDF_new_dl( ), use 
PDF_delete_dl( ) to delete the PDFlib object (see Section 2.4.3, »Using PDFlib as a DLL load-
ed at Runtime«, page 22).
C++: this function is indirectly available via the PDF destructor.
Java: this function is automatically called by the wrapper code. However, it can explicit-
ly be called from client code in order to overcome shortcomings in Java’s finalizer sys-
tem.
Documents you may be interested
Documents you may be interested