Prehazeni stranek v pdf dokumentu was: Re: Vetsi pdf soubor z ps2pdf nez pdftexem

Milan Vancura milan at ucw.cz
Fri Sep 24 10:49:37 CEST 2004


Dobry den,

porad premyslim, co je za potiz s tim preskladanim stranek v pdf - vzdyt to je
jedna z mala veci, co lze v pdf dokumentu udelat jednoduse, dokonce rucne, v
ASCII editoru. Proc bych mel vymyslet nejake slozitosti jako pdfximage a
ukladani fontu (obecne zdroju) ke kazde strance zvlast, kdyz urovne zdroju
(fonty, obrazky...), stranek a jejich razeni jsou v dokumentu nezavisle? Popisu
priklad, jak si zkusebne prehazet stranky v pdf dokumentu. Neverim, ze na tak
jednoduchou vec nelze napsat skript nebo dokonce nutnost pouzivat nejake
spinave triky. Bohuzel ja jsem si jeste cas nenasel, abych to napsal.

Milan Vancura

Priklad:

1. vemte si nejaky pdf dokument a udelejte si kopiii pod nazvem test.pdf
2. otevrete test.pdf v ASCII editoru a tam skocte na posledni radku. posledni
radky by mely byt priblizne v tomto tvaru (nezakryptovany dokument):

trailer
<<
/Size 263
/Root 2 0 R
/Info 1 0 R
>>
startxref
166535
%%EOF

3. vyhledejte objekt Root, v prikladu vyse je to objekt "2 0", tedy hledame od
zacatku radky "2 0 obj": (viz pozn. ***)

2 0 obj
<<
/Type /Catalog
/PageMode /UseOutlines
/Pages 3 0 R
/Outlines 13 0 R
/Threads 261 0 R
/Names 262 0 R
>>
endobj

4. Stejnym zpusobem ted najdeme objekt Pages a jsme skoro u cile:

3 0 obj
<<
/Type /Pages
/Count 21
/Kids [241 0 R 239 0 R 243 0 R 245 0 R]
/MediaBox [0 0 612 792]
>>
endobj

5. stranky nejsou ulozene v seznamu (poli), ale ve stromu: proto polozka Kids.
My vyzkousime jednoduche prohozeni skupiny stranek: prohodime prvni dva zaznamy
v poli Kids: "241 0 R" a "239 0 R". Nezapomente, ze musi zustat radek presne
stejne dlouhy, zadne mezery navic.

6. dokument ulozime a prohledneme. Vidime, ze dokument zacina jinou stranou
(napr. 8) - opravdu: skupiny stranek (u me v prikladu 1-7 a 7-13) se prohodily.
Presto funguji Bookmarky, anotace, vse!

7. EOF

*** Ve skutecnosti by se objekt mel hledat pres tabulku objektu, coz je stejne
jednoduche: po "startxref" je pozice v dokumentu, kde tabulka zacina, jeji
prvni radek je pocatecni cislo objektu (0) a pocet objektu (zde 263), kazdy
radek je pozice jednoho objektu v souboru (a za mezerou priznaky, ty nas u
primo vygenerovanych dokumentu nzajimaji).



More information about the csTeX mailing list