[cl-pdf-devel] Some problems with pdf-parser

Piotr Chamera piotr_chamera at poczta.onet.pl
Fri Jun 10 18:12:24 UTC 2011


Some corrections to previous post

Ad 2. In file cl-pdf, function make-indirect-object

This code seems to work for me correcting unexpected behaviour
but I am not sure it is correct in every case (added some formats for 
debugging):

(defun make-indirect-object (obj-number gen-number position)
   (let ((object (gethash (cons obj-number gen-number) *indirect-objects*)))
     (if object
     (progn
       (format T "obj alredy present: ~s ~s at position ~s" obj-number 
gen-number(cdr object))
       (if (zerop (cdr object)) ; some objects are created and marked 
with invalid position = 0
           (progn
         (format T " (marked for update with position=0), update 
position to ~s~%" position)
         (setf (gethash (cons obj-number gen-number) *indirect-objects*)
               (cons (car object) position)))
            (format T " (dropped older one at position ~s)~%" position))
         (car object))
     (progn
       (format T "making obj: ~s ~s position ~s ~%" obj-number 
gen-number position)
       (let ((new-object (make-instance 'indirect-object
                        :obj-number obj-number
                        :gen-number gen-number
                        :content :unread
                        :no-link t)))
         (setf (gethash (cons obj-number gen-number) *indirect-objects*) 
(cons new-object position))
         new-object)))))

Now order of reading example file is as follow:

startxref position: 89502
xref position: 89502
making obj: 4 0 position 85386
making obj: 5 0 position 89106
making obj: 8 0 position 89309
making obj: 7 0 position 0
xref position: 116
making obj: 6 0 position 16
obj alredy present: 7 0 at position 0 (marked for update with 
position=0), update position to 1150
obj alredy present: 8 0 at position 89309 (dropped older one at position 
1227)
making obj: 9 0 position 1411
making obj: 10 0 position 1554
(...)
making obj: 37 0 position 936
xref position: 85210
making obj: 1 0 position 81250
making obj: 2 0 position 81284
making obj: 3 0 position 81308
obj alredy present: 4 0 at position 85386 (dropped older one at position 
81359)
obj alredy present: 5 0 at position 89106 (dropped older one at position 
85007)


> But this reveals another problem in read-xref-and-trailer ...
Please ignore this, I misread this function, it seems ok.


-- 
pozdrawiam
Piotr Chamera





More information about the cl-pdf-devel mailing list