c# free pdf viewer component : Add a page to a pdf online Library SDK component .net asp.net windows mvc recognizing_malformed_pdf_f1-part872

This slide on line endings is more of a side note; but, line endings do cause a significant amount of 
confusion.  Thus, I felt it was important to place here in the presentation.
PDF Reference, Third Edition
3.4 File Structure
As a matter of convention, the tokens in a PDF file are arranged into lines; see Section 3.1, “Lexical 
Conventions.” Each line is terminated by an end-of-line (EOL) marker, which may be a carriage 
return (character code 13), a line feed (character code 10), or both. PDF files with binary data may 
have arbitrarily long lines. However, to increase compatibility with other applications that process 
PDF files, lines that are not part of stream object data are limited to no more than 255 characters, 
with one exception: beginning with PDF 1.3, an exception is made to the restriction on line length in 
the case of the Contents string of a signature dictionary (see “Signature Fields” on page 547). See 
also implementation note 11 in Appendix H.
PDF Conference June 5, 2002
Carriage Returns and Line 
Feeds
Side Note: Carriage Returns and Line Feeds 
behave differently
Carriage Returns - Macintosh
Line Feeds - Unix
• Carriage Returns and Line Feeds - Windows
• They are different:
• Carriage Return - ASCII 13 Decimal, 0x0D Hex
• Line Feed - ASCII 10 Decimal, 0x0A Hex
21
21
PDF Reference, Third Edition
3.4.1 File Header
The first line of a PDF file is a header identifying the version of the PDF specification to which the 
file conforms.
Note: If a PDF file contains binary data, as most do (see Section 3.1, “Lexical Conventions”), it is 
recommended that the header line be immediately followed by a comment line containing at least 
four binary characters—that is, characters whose codes are 128 or greater. This will ensure proper 
behavior of file transfer applications that inspect data near the beginning of a file to determine 
whether to treat the file’s contents as text or as binary.
Some developers cheat by omitting the binary data in the second line.
PDF Conference June 5, 2002
Header
Only Two Lines
How Hard Can It Be?
%PDF-1.2
%‚„œ”
%PDF-1.3
%JetForm PDF Support Version 2.3.000
%EncodingObject=0
%˚¸˝˛ 1 0 obj << /Type /Catalog /Pages 3 0 R /Outlines 4 0 
R >> endobj
22
22
Page 11 of  26
Add a page to a pdf online - insert pages into PDF file in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Guide C# Users to Insert (Empty) PDF Page or Pages from a Supported File Format
add page number pdf; add and delete pages from pdf
Add a page to a pdf online - VB.NET PDF Page Insert Library: insert pages into PDF file in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Easy to Use VB.NET APIs to Add a New Blank Page to PDF Document
add pages to pdf without acrobat; adding a page to a pdf file
PDF Conference June 5, 2002
Header (continued)
A Quirk being Exploited by some PDF Creators
Creating a PDF file without the binary data in 
the second line causes Acrobat to enter a 
mode where it will not report all errors.
• So, missing binary data is a good sign that 
something else if wrong with the given PDF file.
23
23
PDF Reference, Third Edition
3.4.4 File Trailer
The trailer of a PDF file enables an application reading the file to quickly find the cross-reference 
table and certain special objects. Applications should read a PDF file from its end. The last line of 
the file contains only the end-of-file marker, %%EOF. (See implementation note 14 in Appendix H.) 
The two preceding lines contain the keyword startxref and the byte offset from the beginning of the 
file to the beginning of the xref keyword in the last cross-reference section. The startxref line is 
preceded by the trailer dictionary, consisting of the keyword trailer followed by a series of key-value 
pairs enclosed in double angle brackets (<<…>>). Thus, the trailer has the following overall 
structure:
trailer
<< key1 value1
key2 value2
keyn valuen
>>
startxref
Byte_offset_of_last_cross-reference_section
%%EOF
PDF Conference June 5, 2002
Trailer
/Info and /ID will be part of any well formed 
document trailer 
trailer
<<
/Size 9 <- Size actually does need the correct object count
/Root 1 0 R 
/Info 2 0 R
/ID[<22fe617fe156d37892dd946294182028><22fe617fe156d37892dd9
46294182028>]
>>
startxref
51347
%%EOF
24
24
Page 12 of  26
VB.NET PDF insert image library: insert images into PDF in vb.net
Access to freeware download and online VB.NET to provide users the most individualized PDF page image inserting function, allowing developers to add and insert
add and delete pages in pdf; add a page to pdf file
C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
C# File: Split PDF; C# Page: Insert PDF pages; C# Page: Delete PDF pages; C# C# Read: PDF Image Extract; C# Write: Insert text into PDF; C# Write: Add Image to
adding page numbers pdf; add page to pdf reader
PDF Reference, Third Edition
3.4.3 Cross-Reference Table
The cross-reference table contains information that permits random access to indirect objects within 
the file, so that the entire file need not be read to locate any particular object. The table contains a 
one-line entry for each indirect object, specifying the location of that object within the body of the 
file. 
The cross-reference table is the only part of a PDF file with a fixed format; this permits entries in the 
table to be accessed randomly. 
Each cross-reference section begins with a line containing the keyword xref. 
Following this line are one or more cross-reference subsections, which may appear in any order. 
The subsection begins with a line containing two numbers, separated by a space: the object number 
of the first object in this subsection and the number of entries in the subsection.
PDF Conference June 5, 2002
Cross Reference Troubles
Getting the xref correct tends to be the 
trickiest part for PDF developers
xref
0 9 
0000000000 65535 f
0000000016 00000 n
0000000107 00000 n
0000000343 00000 n
0000000406 00000 n
0000000570 00000 n
0000000656 00000 n
Each entry is exactly 20 bytes long
Including the end-of-line marker
25
25
PDF Conference June 5, 2002
Cross Reference Troubles 
(continued)
• Garbage before the beginning of the file will 
offset the xref by the length of the garbage.
Missing line feed character resulting in a 19 
byte entry instead of a 20 byte entry.
Entry count does not match the actual number 
of entries.
Entry byte offsets do not point to the actual 
byte offset to the beginning of the associated 
CosObj.
26
26
Page 13 of  26
VB.NET PDF Password Library: add, remove, edit PDF file password
On this page, we will illustrate how to protect PDF document via password by using simple VB.NET demo code. Open password protected PDF. Add password to PDF.
add blank page to pdf preview; add page numbers to pdf document in preview
C# PDF insert image Library: insert images into PDF in C#.net, ASP
download and online C#.NET class source code. How to insert and add image, picture, digital photo, scanned signature or logo into PDF document page in C#.NET
add page number to pdf document; add page to pdf online
Binary data before the %PDF is used in some prepress workflows.
However, binary data before the %PDF could also be a sign of a file transfer error.
Binary data after the %%EOF could be caused in several different ways.
1. File system error.
2. File transfer error.
3. Programmer error.
Binary data between objects within a PDF file, that does not overwrite data or invalidate the 
cross reference table, is almost always caused by programmer error.
%!PS-Adobe-3.0 PDF-1.3
%KDKChargeNumber: AVIREPORTS
...
%%Title: BBJ JULY RUN-B73729054 (YG005)
%%Emulation: pdf
%KDKOutputMedia: stapler
%KDKChaptersAreSets: on
%%EndComments%PDF-1.3
%‚„œ”
PDF Conference June 5, 2002
Garbage Before, After and In 
Between
The PDF Reference allows up to 1K of garbage 
before the beginning of the PDF file.
Acrobat will accept an almost unlimited amount 
of garbage after the %%EOF marker at the end 
of the file.
Binary garbage can also exist between the end 
of an object and the beginning of the next 
object.
27
27
PDF Reference, Third Edition
9.2.1 Document Information Dictionary
The optional Info entry in the trailer of a PDF File (see Section 3.4.4, “File 
Trailer”) can hold a document information dictionary containing metadata for the 
document.
Example 9.1 shows a typical document information dictionary.
Example 9.1
1 0 obj
<< /Title (PostScript Language Reference, Third Edition)
/Author (Adobe Systems Incorporated)
/Creator (Adobe® FrameMaker® 5.5.3 for Power Macintosh)
/Producer (Acrobat® Distiller™ 3.01 for Power Macintosh)
/CreationDate (D:19970915110347-08’00’)
/ModDate (D:19990209153925-08’00’)
>>
endobj
PDF Conference June 5, 2002
Document Information 
Dictionary
Sometimes called Doc Info Fields
• The Info Dictionary is officially Optional; but, 
since this is a presentation on recognizing 
corrupt and malformed PDF files; a missing or 
incomplete Info Dictionary is a sign of a poorly 
built file.
Creator & Producer
Creation Date and Modification Date
28
28
Page 14 of  26
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
Please follow the sections below to learn more. DLLs for Deleting Page from PDF Document in VB.NET Class. Add necessary references:
add page numbers to pdf document; add page numbers pdf file
VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
C# File: Split PDF; C# Page: Insert PDF pages; C# Page: Delete PDF pages; C# C# Read: PDF Image Extract; C# Write: Insert text into PDF; C# Write: Add Image to
add page numbers to a pdf file; adding page numbers to pdf files
PDF Reference, Third Edition
9.2.1 Document Information Dictionary
Creator text string (Optional) If the document was converted to PDF from another format, the name 
of the application (for example, Adobe FrameMaker®) that created the original document from 
which it was converted. 
Producer text string (Optional) If the document was converted to PDF from another format, the 
name of the application (for example, Acrobat Distiller) that converted it to PDF.
CreationDate date (Optional) The date and time the document was created, in human-readable form 
(see Section 3.8.2, “Dates”). 
ModDate date (Optional; PDF 1.1) The date and time the document was most recently modified, in 
human-readable form (see Section 3.8.2, “Dates”).
PDF Conference June 5, 2002
Creator and Producer
Document Information Dictionary
• One of the first items to check
For some unknown reason; the PDF Reference 
still considers these items optional.
Many PDF files are being created without the 
Creator and Producer information
A well formed PDF file will always have a 
Creator and Producer
29
29
PDF Reference, Third Edition
3.8.2 Dates
PDF defines a standard date format, which closely follows that of the international standard ASN.1 
(Abstract Syntax Notation One), defined in ISO/IEC 8824 (seethe Bibliography). 
A date is a string of the form (D:YYYYMMDDHHmmSSOHH’mm’)
For example, December 23, 1998, at 7:52 PM, U.S. Pacific Standard Time, is represented by the 
string D:199812231952-08’00’
PDF Conference June 5, 2002
Incorrect Date Format
Acrobat Date format is 
D:20010605110739
2 0 obj
<<
/Creator(Adobe Photoshop 5.0)
/CreationDate( Tue Jun 05 11:07:39 2001
)
/Producer(Adobe Photoshop for Windows)
30
30
Page 15 of  26
C# HTML5 PDF Viewer SDK to view PDF document online in C#.NET
C# File: Split PDF; C# Page: Insert PDF pages; C# Page: Delete PDF pages; C# C# Read: PDF Image Extract; C# Write: Insert text into PDF; C# Write: Add Image to
add a page to a pdf in acrobat; add page to pdf in preview
C# PDF Password Library: add, remove, edit PDF file password in C#
your PDF document in C# project, XDoc.PDF provides some PDF security settings. On this page, we will talk about how to achieve this via Add necessary references
add blank page to pdf; add page to a pdf
PDF Conference June 5, 2002
Same Common Errors and 
What They Actually Mean
At least some that are fairly easy to Find
31
31
PDF Conference June 5, 2002
Types of Common Errors
Expected a Name Object
Expected a Number Object
The font ‘X’ contains bad /Widths
• Unable to find or create the font ‘X’
Bad Parameter
32
32
Page 16 of  26
PDF Conference June 5, 2002
Expected a Name Object
Typically occurs when the CosDict item 
contains a CosString instead of a CosName
CosString - /MyName (The Cos String)
CosName - /MyName /TheCosName
33
33
PDF Conference June 5, 2002
Expected a Number Object
Searching a CosDict for a CosNumber and 
found something else
34
Common to find an indirect reference instead of 
a number.
When working on an international system; 
some software will use the local numeric 
delimiter within numbers; for example; comma 
instead of period.
/BBox [ 0 0 11,4651 10,8281 ]
/BBox [ 0 0 11.4651 10.8281 ]
34
Page 17 of  26
A Font Object with a /Widths array should look like the following:
10 0 obj
<<
/Type /Font
/Subtype /TrueType
/Name /Fo8
/BaseFont /TimesNewRoman+000008
/FontDescriptor 6 0 R
/Encoding /WinAnsiEncoding
/FirstChar 32
/LastChar 255
/Widths [ 294 332 460 498 498 885 774 332 332 332 498 885 332 332 332332 498 498 498 498 498 
498 498 498 498 498 332 332 995 885 995 442 885 719 626 682 737 626 590 719 737 332 386 700 
626 903 737 719 571 719 664 534 626 737 719 940 719 719 645 332 332 332 498 498 332 442 498 
442 498 442 332 498 498 276 276 498 276 774 498 498 498 498 368 386 276 498 498 719 498 498 
442 442 498 442 995 995 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 294 332 498 
498 498 498 332 498 498 498 498 406 498 885 737 498 498 885 498 498 498 552 498 332 332 442 
498 406 885 885 885 442 719 719 719 719 719 719 886 882 626 626 626 626 332 332 332 332 737 
737 719 719 719 719 719 664719 737 737 737 737 719 571 498 442 442 442 442 442 442 664 442 
442442 442 442 276 276 276 276 571 498 498 498 498 498 498 885 498 498498 498 498 498 498 
498 ]
>>
PDF Conference June 5, 2002
The font ‘X’ contains bad 
/Widths
Programmer Error
11 0 obj
<<
/Type /Font
/Subtype /TrueType
/Name /Fo1
/BaseFont /CourierNew,Bold
/Encoding /WinAnsiEncoding
/FirstChar 255
/LastChar 0
/Widths [  ]
>>
endobj
35
35
7 0 obj <<
/Type /Font
/Subtype /Type1
/Name /G1F9
/BaseFont /TerrapinCode3of9HD
/FirstChar 0
/LastChar 255
/Widths [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 319 0 0 0 319 319 0 0 0 0 319 
319 0 319 319 319 319 319 319 319 319 319 319 319 319 319 0 0 0 0 0 0 0 319 319 319 319 319 
319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 0 0 0 0 0 
0 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 
319 319 319 319 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 319 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 319 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
/FontDescriptor 8 0 R
>> endobj
8 0 obj <<
/Type /FontDescriptor 
/Ascent 0
/CapHeight 0
/Descent 0
/FontBBox [0 0 0 0]
/FontName /TerrapinCode3of9HD
/Flags  6
/ItalicAngle 0
/StemV 0
>> endobj
PDF Conference June 5, 2002
Unable to find or create the 
font ‘X’
Some characters may not display or print 
correctly.
Typically Acrobat is trying to find a font which it 
can not locate in the PDF file or on the local 
system
In the case in the notes, an obscure font is 
used by was not embedded
Lesson Learned: Embed Fonts
36
36
Page 18 of  26
Gives a bad parameter error.  
2 0 obj
<< 
/Creator (Adobe Photoshop 6.0)
/CreationDate (D:20010605144636)
/Producer (Adobe Photoshop for Macintosh)
/ModDate (D:20010605151707-04’00’)
>> 
endobj
11 0 obj
<< /Length 12 0 R >> 
stream
endstream
endobj
12 0 obj
endobj
This pdf was created by Photoshop 6.0 for Mac.  When the pdf is opened in a text editor, it has 
multiple spaces before the first xref.  The pdf is linearized. 
The file contains a zero-length CosStream
PDF Conference June 5, 2002
Bad Parameter
Another Photoshop Quirk
11 0 obj
• << /Length 12 0 R >> 
stream
endstream
endobj
12 0 obj
• 
endobj
37
37
PDF Conference June 5, 2002
Correcting Problems
Some Simple, and Many Times Effective, 
Ways of Repairing PDF Files
38
38
Page 19 of  26
PDF Conference June 5, 2002
Correcting Problems
These work for many corrupted PDF files
Acrobat Save 
To Save Acrobat’s Background Correction
Acrobat Save As...
Turn Off Optimize for Fast Web View
Acrobat Save As...
Turn On Optimize for Fast Web View
Acrobat Distiller
Use Distiller 4 or 5
Form Fields can be pasted in the new file
Distiller is Your Friend - It’s amazing how many problems 
can be corrected by simply re-distilling a corrupted PDF file
39
39
PDF Conference June 5, 2002
Other Malformed PDF 
Issues
40
40
Page 20 of  26
Documents you may be interested
Documents you may be interested