Posts tagged "object"

Acrobat: Syntax problem: Indirect object has object number not preceded by an EOL marker

Issue

If you are using Acrobat Preflight or LiveCycle DocConverter to validate PDF/A documents you may encounter the following error after validation:

Syntax problem: Indirect object has object number not preceded by an EOL marker

Reason

The PDF standard stipulates that a PDF contains lines, each of which will be terminated with a CR, a LF, or both.

If you analyze the Preflight report you will be able to see which object is causing this error.

In this case Preflight is complaining that there is no EOL marker before the “1 0 obj”.

Open the PDF in an advanced editor like Notepad++ and check the CR and LF characters on all the lines surrounding the “1 0 obj”.

There are EOL markers (CR and/or LF) surrounding the “1 0 obj” object.  This must be caused therefore by a problem in the cross-reference table in the PDF file.  If you scroll to the bottom of the file in Notepad++ you will see a table similar to the following:

xref
0 11
0000000000 65535 f
0000000017 00000 n
0000000115 00000 n
0000186286 00000 n
0000000182 00000 n
0000000340 00000 n
0000000485 00000 n
0000186388 00000 n
0000186599 00000 n
0000189276 00000 n
0000190175 00000 n

This is the cross-reference table which allows direct access to all objects in the PDF file (like the index in a book).  The first line is a summary of the table (starts with object 0, and contains 11 objects).  The rest of the lines make up the index of those 11 objects.  Lets analyze the line entry for object 1 (0000000017 00000 n).  The value 17 is the number of bytes from the start of the PDF file where the object 1 should be located.  The other values (00000 and n) are the generation number and a flag to tell if the object is in use or free (more info on these objects here: http://labs.appligent.com/pdfblog/pdf_cross_reference_table.php).

So we know that the object 1 should start after 17 bytes in the PDF file.  However if you use Notepad++ to select the bytes up to position 17 you will see that it refers to the position after the “NUL” object, and before the EOL markers (CR LF):

Note the selected text and the byte count in the status bar “(17 bytes)”.  It should be pointing to the start of the next line where the “1 0 objCRLF” entry is located (i.e. byte 19).

Solution

Our recommendation here is to ensure you use Adobe tools (e.g. Acrobat/LiveCycle) to create your PDF files.  The PDFs generated with Adobe software will have a valid structure and will comply with the PDF standards (PDF, PDF/A, PDF/X etc…).

In this case the PDF was generated with an external tool and this resulted in the incorrect entry in the cross-reference table.  Although we would not advise such manual modifications in your PDF file content, you can fix such an issue by manually changing the cross-reference table entry from 17 to 19 bytes so that the “1 0 obj” object is correctly indexed.  The PDF structure is then correct and Preflight can validate the PDF/A.

reference: (182711898/3002114)

VN:F [1.9.22_1171]
Was this helpful? Please rate the content.
Rating: 10.0/10 (1 vote cast)