c# pdf library free : Adding metadata to pdf control Library platform web page asp.net winforms web browser ThesisWouterLabeeuw1-part213

Chapter1
PDF
1.1 Introduction
TheinformationinthisPDFchapterismostlybasedon[11,PDFReference,thirdedition].
SomedocumentsdescribingairflightinformationforpilotsarewritteninPDF.Thepurpose
ofthischapteristounderstandPDFinordertodetermineifitispossibletogetthewanted
informationoutofthePDFfile.
1.2 Structure
1.2.1 Layout
ThelayoutofaPDFdocumentisdescribedintable1.1.
Header
Body
CrossReferenceTable
Trailer
Figure1.1: PDFLayout
Theheaderisonlyoneline.ItspecifiesthePDFversion.Thelinecanlooklikethis:%PDF-1.4.
Thebodycontainsalltheobjects. Anobjectcanbe: acatalogue,apage,anamedirectory
orsomethingelse(liketext,data,images,etc).
Thecrossreferencetablegivesthepositionofalltheobjects.
Thetraileristhereferencetothecrossreferencetable. Italsogivestheamountofitemsin
thecrossreferencetableandthelocationofboththecatalogueandtheencryptiondirectory.
3
Adding metadata to pdf - add, remove, update PDF metadata in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Allow C# Developers to Read, Add, Edit, Update and Delete PDF Metadata
pdf metadata editor online; pdf metadata extract
Adding metadata to pdf - VB.NET PDF metadata library: add, remove, update PDF metadata in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Enable VB.NET Users to Read, Write, Edit, Delete and Update PDF Document Metadata
pdf xmp metadata; search pdf metadata
CHAPTER 1. PDF
4
1.2.2 Objects
The body contains only objects. Each object has a number, so it can be referred to from
another object.
The declaration of an object which has number 1 looks like this:
1 0 obj
endobj
In stead of numbers, there is also the possibility to work with name directories.
Some objects have special functions and are required like the catalogue and the page tree.
See below for more information. Other objects are for displaying information. These objects
are needed for the displaying of air flight information.
Every object can be found in the cross reference table, also called xref. This means that not
the whole file should be parsed to find some kind of object.
1.2.3 Catalogue
The catalogue is used to refer to the page tree node, to define the page layout etc.
1.2.4 Page tree
The page tree is a tree of pages. The tree is defined in the “pages”-object. The documents
can be accessed through this structure. In this way, a page can be found quickly.
Every “page”-object is a child of the “pages”-object.
1.2.5 Cross reference table
Across reference table is built up inthree parts: the beginning,the sections andthe references.
An example of a cross reference table:
xref
0 3
0000000000 65535 f
0000000009 00000 n
0000000062 00000 n
The beginning of the table is the keyword xref.
The sections part contains only one section here. The section has number 0. When a PDF
gets updated, there will be more sections. In the example there are three subsections. The
subsection,here three, can be found next tothe section. The subsections represent the amount
of items that follow in the references. The first ten numbers refer to the place in the file. The
second amount of numbers (five) refer to how many times an object occurs with that object
number. A zero for the second number means the object is present only once. The letter at
the end can be f or n. F is free and n is in use, meaning that the object is or isn’t used. The
VB.NET PDF Library SDK to view, edit, convert, process PDF file
adding password, digital signatures and redaction feature. Various of PDF text and images processing features for VB.NET project. Multiple metadata types of PDF
view pdf metadata; view pdf metadata in explorer
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
Support adding PDF page number. Offer PDF page break inserting function. DLLs for Adding Page into PDF Document in VB.NET Class. Add necessary references:
pdf metadata; extract pdf metadata
CHAPTER 1. PDF
5
first number at the first line is always ten times zero. This is the reference to the beginning
of the file. The second number is the amount of times it is used, when the second number
reaches 65535, it is never reused. That is why it is 65535 at the beginning of the file, you
can’t have a new start location.
1.2.6 Trailer
The trailer looks like this:
trailer
<< /Size 7
/Root 1 0 R
>>
startxref
1556
%%EOF
The word trailer starts the trailer. After the word “trailer” there is information about the
amount of entries inthe xref and the object number of the root,mostly the catalogue. Beneath
this information you can find the beginning of the xref. Here at position 1556. %%EOF closes
the PDF.
1.3 Syntax
1.3.1 Lexical Conventions
APDF document is a sequence of bytes. The bytes aren’t restricted to ASCII-codes, but can
contain arbitrary bytes.
The bytes can form a token and these tokens can be grouped into objects.
Character set
The PDF character set is divided into three classes, called regular, delimiter, and white-space
characters.
White-space characters are the spaces, tabs, etc. They separate constructs such as names
and numbers from each other. Examples are space, tabs, etc.
Delimiter characters delimit entities such as strings, arrays, names, and comments. These
characters are: (, ), ¡, ¿, [, ], , , /, and %.
Regular characters are all the other characters.
C# PDF Library SDK to view, edit, convert, process PDF file for C#
Multiple metadata types of PDF file can be easily added and processed in C#.NET Class. Capable of adding PDF file navigation features to your C# program.
add metadata to pdf; pdf metadata viewer
C# PDF insert text Library: insert text into PDF content in C#.net
Supports adding text to PDF in preview without adobe reader installed in ASP.NET. Powerful .NET PDF edit control allows modify existing scanned PDF text.
remove pdf metadata online; remove metadata from pdf file
CHAPTER 1. PDF
6
Comments
There is a possibility to use comment in PDF, using the % character. Everything that follows
after the % character is comment. The comment is ended by an end of line. PDF ignores
comments, treating them as if they were single white-space characters.
1.3.2 Objects
PDF supports 8 types of objects:
Booleans are true or false and often used in if/else structures.
Numeric objects are integers or real numbers.
integer value examples: 10 -98 0
real number value examples: 33.2 -98.6 0.0
Strings There are two types: “literal” strings and “hexadecimal” strings
Literal strings are a number of characters enclosed in parentheses. Any character
may appear in a string except unbalanced parentheses and the backslash, which is
used for escape sequences (\t = tab etc).
Examples: (This is a string), (Strings may contain balanced parentheses ( ) and
special characters (*!&}ˆ% and so on).)
If a string is too long to be easily placed on a single line, it may be split across
multiple lines by using the backslash character at the end of a line to indicate
that the string continues on the following line. If the backslash is followed by the
end-of-line marker, they are not considered part of the string.
Example: (These \
two strings \
are the same.)
(These two strings are the same.)
Hexadecimal strings are written as a sequence of hexadecimal digits (0-9 and either
A-F or a-f) enclosed within angle brackets ( and )
Example: 35A35F3B
Names are very small symbols uniquely defined by a sequence of characters. They are often
usedwith variable strings,such as font names whichare not known whenthe programme
is written. Names start with an /, example: /Name1.
Arrays are a one-dimensional collection of objects arranged sequentially. They may be any
combination of numbers, strings, dictionaries, or any other objects, including other
VB.NET PDF insert text library: insert text into PDF content in vb
VB.NET PDF - Insert Text to PDF Document in VB.NET. Providing Demo Code for Adding and Inserting Text to PDF File Page in VB.NET Program.
remove metadata from pdf acrobat; batch pdf metadata
C# PDF insert image Library: insert images into PDF in C#.net, ASP
application? To help you solve this technical problem, we provide this C#.NET PDF image adding control, XDoc.PDF for .NET. Similar
batch pdf metadata; pdf metadata online
CHAPTER 1. PDF
7
arrays.
Example: [123 ABC (this is a string) /SomeName].
Dictionaries are associative table containing pairs of objects. Every entry can be any type
of object (name, array, dictionary, string, null, etc). They are presented between double
angle brackets ( ... )
Example:  /Version 0.01 .
Streams are a sequence of bytes that can/will be read incrementally and not entirety like a
string. The structure of a stream can be viewed in figure 1.2.
The null object is not one of the above objects.
 ... 
←a dictionary
stream
←beginning of stream
... some bytes ...
←data
endstream
←end of stream
Figure 1.2: PDF Stream layout
An object can have a label. This label is an identifier. This identifier is unique and gives
other objects the possibility to refer to this object. This identifier or label makes the object
indirect.
The object identifier consists of two parts:
Apositive integer object number, the identifier/
Apositive integer generation number. Mostly zero.
Example:
6 0 obj
(The Object)
endobj
To refer to that object:
12 0 R
1.3.3 Filters
Afilter indicates how data in a stream must be decoded. They are specified by the stream’s
directory. The filters can be cascaded, so more than one transformation can be done sequen-
tially.
There are 2 main categories:
C# PDF Page Insert Library: insert pages into PDF file in C#.net
By using reliable APIs, C# programmers are capable of adding and inserting (empty) PDF page or pages from various file formats, such as PDF, Tiff, Word, Excel
get pdf metadata; change pdf metadata
C# PDF Annotate Library: Draw, edit PDF annotation, markups in C#.
Provide users with examples for adding text box to PDF and edit font size and color in text box field in C#.NET program. C#.NET: Draw Markups on PDF File.
pdf xmp metadata; pdf metadata editor online
CHAPTER 1. PDF
8
ASCII filters, decoding ASCII text.
Decompression filters, decompressing compressed data.
Standard filters:
ASCIIHexDecoder decodes data encoded in an ASCII hexadecimal representation, repro-
ducing the original binary data.
ASCII85Decode decodes data encoded in an ASCII base-85 representation, reproducing
the original binary data.
LZWDecode decompresses data encoded using the LZW (Lempel-Ziv-Welch) adaptive com-
pression method, reproducing the original text or binary data. LZW (Lempel-Ziv-
Welch) is a universal lossless data compression algorithm.
FlateDecode decompresses using the zlib/deflate compression method, reproducing the
original text or binary data. This type is used in gzip and png.
RunLengthDecode decompresses using a byte-oriented run-length encoding algorithm, re-
producing the original text or binary data.
CCITTFaxDecode decompresses using the CCITT facsimile standard. (monochrome im-
ages)
JBIG2Decode decompress using JBIG2. (monochrome images)
DCTDecode decompresses data encoded using a DCT. (JPEG)
JPXDecode decompresses using the wavelet-based JPEG2000 standard.
Crypt decrypts data encrypted by a security handler, reproducing the original data as it
was before the encryption.
1.3.4 Content stream
Content streams describe how the page and other graphical element should look like.
Acontent stream consists of a sequence of instructions. The stream can be coded. Sometimes
the stream has to be decoded before the content can be interpreted. The instructions are
represented in the form of PDF objects, using the same object syntax as in the rest of the
PDF document.
Example:
0 1 m
1 2 l
S
VB.NET PDF File & Page Process Library SDK for vb.net, ASP.NET
page modifying page, you will find detailed guidance on creating, loading, merge and splitting PDF pages and Files, adding a page into PDF document, deleting
bulk edit pdf metadata; pdf metadata viewer
C# PDF Password Library: add, remove, edit PDF file password in C#
Able to perform PDF file password adding, deleting and changing in Visual Studio .NET project use C# source code in .NET class. Allow
read pdf metadata; add metadata to pdf
CHAPTER 1. PDF
9
This draws a line from (0, 1) to (1, 2). See Graphics (1.4). In the first line the numbers 0
and 1 are the operands, character m is the operator.
1.4 Graphics
There are 6 main groups of graphical operators:
Graphics state operators manipulate the graphics state structure.
Path construction operators specify paths.
Other painting operators paint certain self-describing graphics objects.
Text operators select and show character glyphs from fonts.
Marked-content, used for document interchange.
1.4.1 Coordinate systems
The coordinate system determines where the painting happens, how the page is positioned,
etc.
There are two spaces: device space, which is device dependent, and user space, which is device
independent. Since it’s not necessary to print in this study, only user space is described.
Paths and positions are defined on the Cartesian plane. A coordinate pair is a pair of real
numbers x and y that locate a point horizontally and vertically within a two-dimensional
coordinate space.
Example of coordinates:
0.2 2.9 m
This starts a path at the coordinate (0.2, 2.9).
1.4.2 Graphics state
The graphics state holds current graphics control parameters. These parameters define the
global framework within which the graphics operators execute. For example the f (fill)
operator implicitly uses the current colour parameter,andthe S (stroke) operator additionally
uses the current line width parameter from the graphics state.
The graphics state is initialised at the beginning of each page. In general the operators that
set graphics state parameters simply store them unchanged for later use by the painting
operators.
CHAPTER 1. PDF
10
1.4.3 Path construct and painting
Apath is composed of straight and curved line segments. The segments can be connected or
disconnected. A pair of segments is connected if they follow one another, meaning the second
segment starts where the first one ends.
Apath can be closed using the “h”-operator.
PDF path operators are devided into three categories:
Path construction for the geometry of a path.
Path-painting operators end a path. When a path is ended, it usually gets painted.
Clipping path operators.
Path Construction Operators
The current path is the path under construction. The paths are defined internally. When the
path is painted, it is no longer defined. A new current path can be created.
The current point is the last point added to the current path. If the current path is empty,
the current point is undefined. Most operators that add a segment to the current path start
at the current point; if the current point is undefined, they generate an error.
Example:
150 200 m
150 300 l
This starts a path at 150 200 and then adds a line for 150 till 300. Nothing has been drawn.
Path-Painting Operators
The path painting operators paint a path. They also end the path. Once the painting is done,
the path isn’t defined anymore.
The principal pathpainting operators are S (for stroking) and f (for filling).
Stroking The S operator paints a line along the current path. The stroked line follows
each straight or curved segment in the path, centred on the segment with sides parallel to it.
Each of the path’s subpaths is treated separately. The results of the S operator depend on
the current settings of various parameters in the graphics state.
Filling The f operator uses the current nonstroking colour to paint the entire region en-
closed by the current path. If the path consists of several disconnected subpaths, f paints
the insides of all subpaths which are considered together. Any subpaths that are open are
implicitly closed before being filled.
CHAPTER 1. PDF
11
1.5 Software and source code
1.5.1 Requirements
The aim for Barco is to read in specific PDF documents. These documents contain useful
information for a pilot in an aeroplane.
Barco wants a code that meets its restrictions. The PDF document should be read in directly,
without any conversions in between. The code can not have dynamic allocations. It can’t be
object oriented as well because it is hard to predict how the code will be loaded etc.
With this in mind, a look has been taken at some code that circulates on the internet,
regarding PDF. The ones that can be found in here are Ghostscript and XPDF.
Information for PostScript in this chapter can be found in [7, PostScript Language, Tutorial
and cookbook].
1.5.2 Ghostscript
The information about Ghostscript is based on [1, Overview of Ghostscript]. The biggest part
of the PDF and PostScript implementation is written in PostScript. Writing in PostScript
leverages the C code for multi-threading, garbage collection, error handling, continuations for
streams, etc. according to the Ghostscript developers. The C-code is used to interpret the
PostScript.
Ghostscript’s PDF interpreter files are written entirely in PostScript:
lib/pdf
base.ps
lib/pdf
draw.ps
lib/pdf
font.ps
lib/pdf
main.ps
lib/pdf
rbld.ps
lib/pdf
ops.ps
lib/pdf
sec.ps
Ghostscript implementations aren’t a good solution for Barco. The PDF document isn’t read
in directly. It’s possible that the dynamic allocations can be changed to static ones, but since
the first requirement isn’t ok, it wasn’t necessary to check this.
There is little documentation for/in the source code.
CHAPTER 1. PDF
12
1.5.3 XPDF and Poppler
General information
The information about XPDF is based on [3, XPDF], while the information of Poppler is
based on [2, Poppler]. Poppler and XPDF share about the same code. Poppler is a fork of
the XPDF code. XPDF has nice tools with their source code. This means that XPDF, even
if there is a code for X, is more helpful than Poppler.
The code is nicely written in C++. PDF object has its own class. The X handling classes
for XPDF have their own files.
They both have little documentation in the code and none outside it (nothing on their site).
The XPDF tools
The tools are:
pdffonts, giving information about the fonts in the PDF document
pdfimages, extracting the images out of the PDF, mostly in ppm and pbm format. Jpegs
can be extracted as Jpegs.
pdfinfo, giving standard information about the PDF document
pdftops, converting the PDF document into a PS file
pdftotext, extracting text from a PDF document
The source code of the tools is in the xpdf directory of the source code directory. They can
be compiled using the gnu compiling tools; other compilers haven’t been tested. In windows
this can be done using the Cygwin environment.
To compile the tools dj
make.bat has to be used. This file is situated in the root directory of
the source code. If it is executed in Cygwin, the tools will be built.
These tools are an excellent reference if you are planning to build applications using the xpdf
code.
Pdftops seems to be the most interesting one to examine PDF files. The tool writes the PDF
document out as a PostScript file. In the beginning of the PS file pdftops declares the PDF
functions like l. It happens in lines inside the PS like this:
/l { lineto } def
So in fact it writes out the PDF code for the objects.
Sources
The sources of the xpdf dir (or the poppler dir in poppler) can be found in table 1.1.
The Goo dir contains object oriented glib stuff, written by the xpdf people.
Documents you may be interested
Documents you may be interested