Article View: pl.comp.lang.delphi
Article #346231Re: Usuwanie stron w plikach pdf
From: konsul41
Date: Thu, 28 Dec 2017 09:30
Date: Thu, 28 Dec 2017 09:30
195 lines
6540 bytes
6540 bytes
Trochę byłem zajęty. https://groups.google.com/forum/#!searchin/pl.comp.lang.delphi/konsul41@wp.pl$20pdf|sort:date/pl.comp.lang.delphi/hE78wiAMU9U/X7iahCwIAQAJ Tutaj masz temat tam jest link do strony w której ktoś analizuje "obj" w PDF. link to http://www.angusj.com/delphitips/pdfpagecount.php Ten ktoś (przypuszczam że to jest Angus Johnson) pokazuje jak odczytać ilość stron analizując PDF w twoim przypadku wystarczyło by aby usunąć (wpisać spacje ) w miejsce odnośników (numerów obiektów) do Page, ewentualnie przepisać wszystkie obiekty bez Page, które masz wyrzucić, aktualizując xref. xref wygląda tak xref 0 45 0000000000 65535 f 0000000140 00000 n 0000004917 00000 n 0000000015 00000 n 0000005238 00000 n 0000004743 00000 n ... 0000041340 00000 n 0000057072 00000 n 0000043947 00000 n 0000057239 00000 n 0000057381 00000 n trailer <</Info 44 0 R/ID [<014eed829835169f91f6e5117f75beae><bcc6e0bca5da08e55e612a28ec8594b9>]/Root 43 0 R/Size 45>> startxref 57620 %%EOF Analizę zaczynasz od końca. xref są to bajty od którego zaczynają się objekty. nie zawsze/wszystkie pdf-y mają go w pełni rozbudowane Dalej "startxref" w którym masz podany początek do xref pierwsza część to początek jakiegoś obiektu (obj) ciebie będą interesować takie 8 0 obj <</Kids[4 0 R 9 0 R]/Type/Pages/Count 2/ITXT(5.0.1)>> endobj masz tutaj wpis "/Pages" oznacza że tutaj jest określenie ilości stron masz wpis "/Count 2" oznacza że są 2 strony Tutaj akurat nie ma podanego bezpośredniego odwołania do Strony ale znajdujemy 4 0 obj <</Contents 10 0 R/Type/Page/Resources<</ProcSet 7 0 R/Font<</F 11 0 R>>/XObject<</R3 12 0 R/R4 13 0 R/R5 14 0 R/R 15 0 R/R6 16 0 R/R0 17 0 R/R1 18 0 R/R2 19 0 R>>>>/Parent 8 0 R/Annots[20 0 R 3 0 R]/MediaBox[0 0 595.2756 841.8898]>> endobj i jest wpis "/Page" w innym PDF-ie masz startxref 116 %%EOF i odwołanie do 116 bajta Znajdujemy także taki obiekt 458 0 obj <</Metadata 422 0 R/Pages 447 0 R/Type/Catalog/ViewerPreferences<</Direction/L2R>>>> endobj Wpis "/Pages 447 0 R" oznacza że jest 1 strona ale plik jest kodowany i tekstowe wyszukiwanie nie znajduje obj 447. W trzecim pliku (Generowany przez Projektanta budynków "Architekt bodajże za Autocada) xref 0 60 0000000000 65535 f ... 0008474403 00000 n 0008475280 00000 n 0008524424 00000 n trailer << /Size 60 /Root 1 0 R /Info 2 0 R /ID [<FBEEFE353C8DB6CD142C20290F920B81><FBEEFE353C8DB6CD142C20290F920B81>] >> startxref 8526931 %%EOF Wpis "/Info 2 0 R" Kieruje do obiektu 2 0 obj <</Producer(GPL Ghostscript 9.10) /CreationDate(D:20161209111110+01'00') /ModDate(D:20161209111110+01'00') /Author(\376\377\000K\000a\000m\000i\000l\000G) /Creator(\376\377\000P\000D\000F\000C\000r\000e\000a\000t\000o\000r\000 \000V\000e\000r\000s\000i\000o\000n\000 \0001\000.\0007\000.\0003) /Keywords() /Subject() /Title(\376\377\000F\000:\000\\\000K\000a\000m\000i\000l\000 \000G\000a\000w\000r\000y\000s\000z\000c\000z\000a\000k\000\\\000W\000Y\000D\000R\000U\000K\000O\000W\000A\000N\000E\000\\\0002\0000\0001\0006\000\\\000S\000z\000y\000m\000a\001D\000s\000c\000y\000,\000 \001A\000o\000m\001|\000a\000\\\000Z\000A\000M\000I\000E\000N\000N\000Y\000\\\000S\000z\000y\000m\000a\000n\000s\000c\000y\000 \000Z\000A\000M\000I\000E\000N\000N\000Y\000-\000M\000o\000d\000e\000l)>>endobj te wszystkie cyfry to odnośniki do znaków z załadowanego Font Wpis "/Root 1 0 R" przekierowuje do 1 0 obj <</Type /Catalog /Pages 3 0 R /Metadata 59 0 R >> endobj masz wpis "/Catalog" i "/Pages 3 0 R" to przekierowuje do 3 0 obj << /Type /Pages /Kids [ 4 0 R 7 0 R 10 0 R 13 0 R 16 0 R 19 0 R 22 0 R 25 0 R 30 0 R 36 0 R 42 0 R 48 0 R ] /Count 12 >> endobj zobacz że masz podaną ilość stron wpis "4 0 R" w tablicy "/Kids" przekierowuje do konkretnej strony 4 0 obj <</Type/Page/MediaBox [0 0 842 1585] /Parent 3 0 R /Resources<</ProcSet[/PDF] >> /Contents 5 0 R >> endobj "/Page" to strona i może być dużo odnośników(przekierowań) "/MediaBox [0 0 842 1585]" to wielkość strony. Każda strona może mieć inną wielkość, czcionkę itd. Ty powinieneś zacząć od usunięcia odnośników do "KIDS" Oczywiście to są przykłady PDF-ów i nie oznacza że twoje są takie same. Do każdego "Producer" trzeba podejść indywidualnie uwzględniając wersje PDF i jego specyfikacje. Z ciekawszych rzeczy mogę dopisać Pakowanie obiektów 8 0 obj <</Length 9 0 R/Filter /FlateDecode>> stream ...dane... endobj odnośnik "/Length 9 0 R" jest przekierowaniem do obiektu 9 0 obj 1039595 endobj czyli tyko podana wielkość strumienia "stream" w przypadku filtra FlateDecode to bardziej zaciemnianie niż pakowanie. Każdy obiekt poza danymi do szyfrowania może być pakowany,szyfrowany i to równocześnie kilkoma metodami pod rząd itd. szyfrowanie i XObjects, oraz Forms i JavaScript w pdf (tak pdf może przenosić wirusy) Jeżeli chcesz więcej szczegółów ewentualnie dalsza współpraca na prive. --- Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe Avast. https://www.avast.com/antivirus
Technical Details
Message-ID:
<5a44b9a1$0$15208$65785112@news.neostrada.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!peer02.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mailReferences:
<p0r9t5$m4r$1@news.icm.edu.pl> <5a32811d$0$5146$65785112@news.neostrada.pl> <p1isg1$bju$1@news.icm.edu.pl> <5a3d2510$0$653$65785112@news.neostrada.pl> <p225og$edg$1@news.icm.edu.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!peer02.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail Subject: Re: Usuwanie stron w plikach pdf Newsgroups: pl.comp.lang.delphi References: <p0r9t5$m4r$1@news.icm.edu.pl> <5a32811d$0$5146$65785112@news.neostrada.pl> <p1isg1$bju$1@news.icm.edu.pl> <5a3d2510$0$653$65785112@news.neostrada.pl> <p225og$edg$1@news.icm.edu.pl> From: "konsul41@wp.pl" <konsul41@wp.pl> Date: Thu, 28 Dec 2017 10:30:10 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: <p225og$edg$1@news.icm.edu.pl> X-Antivirus: Avast (VPS 171228-0, 2017-12-28), Outbound message X-Antivirus-Status: Clean Lines: 196 Message-ID: <5a44b9a1$0$15208$65785112@news.neostrada.pl> Organization: Telekomunikacja Polska NNTP-Posting-Host: 95.48.160.163 X-Trace: 1514453410 unt-rea-a-02.news.neostrada.pl 15208 95.48.160.163:50343 X-Complaints-To: abuse@news.neostrada.pl X-Received-Bytes: 6413 X-Received-Body-CRC: 3211213571 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit