Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

Użytkownik


Wszystko jasne, ale jak zwykle diabeł tkwi w szczegółach. Chodzi o to, że fragment 1 Twojego kodu przepuszczony przez awk traci formatowanie i wygląda tak
753 0 obj (if \(this.hostContainer\) { try { this.hostContainer.postMessage\(['newPage', 'pp_376', 15259]\); } catch\(e\) { console.println\(e\); }};)Jak widzisz zapisany jest on w jednej linii. Teraz pytanie. Czy ten kod może być zapisany w jednej linii i czy po zmianie fragmentu 1 na fragment 2 może wyglądać tak?
753 0 obj (this.zoomType = zoomtype.pref; this.pageNum = 360;)
Offline
Użytkownik

Wygląda, że nie musi być nowy wiersz, a wystarczy spacja. Ale mogę się mylić. Zobacz dla pewności plik pod tym adresem: http://pl.rghost.net/58848774
Zmieniony kod teraz każe skoczyć do strony nr 1 (w kodzie strona 0, bo strony w JavaScripcie liczą się od 0 w pdfach). Wystarczy kliknąć na 31, przy Sir John A. w pdfie. W pliku pdf zmieniony kod jest w lini 6242.
Offline

Użytkownik


U mnie ten zmieniony kod wygląd tak
/JS (this.zoomType = zoomtype.pref; this.pageNum = 0;)
czyli przed nawiasem jest jeszcze "/JS"
Czy wszystkie pliki .pdf masz już rozpakowane? W jaki sposób liczyłeś w ilu liniach masz zmienić kod?
Ostatnio edytowany przez prosze (2014-11-02 18:27:25)
Offline
Użytkownik

Może tak być, tzn. może pojawiać się /JS. Te pliki pdf są dziwnie skonstruowane. Czasami po rozpakowaniu jest dostęp do JavaScripu - widać go w edytorze, czasami nie. Gdy nie ma, wystarczyć lekko zmienić kod JavaScrpt z poziomu Adobe Acrobat albo z pluginu http://www.evermap.com/abm_lnk_summary.asp#Editing% … ark%20Actions, zapisać plik, ponownie go odkompresować i pojawia się JavaScript w czystym tekście. Te modyfikacje wpływają na strukturę PDF, stąd czasami jest /JS, czasami nie. Ale to nie ma znaczenia. Wystarczy znaleźć:
Kodzik
if (this.hostContainer) {
try {
this.hostContainer.postMessage(['newPage', 'pp_322', 15259]);
}
catch(e) {
console.println(e);
}
};i zamienić na
(this.zoomType = zoomtype.pref; this.pageNum = 322-16)
Inaczej mówiąc, najlepiej szukać całego Kodzik (to co pp_ się zmienia, tak jak pisałem, cyfry rzymskie, arabskie itd.) i zmienić na to co wyżej (chodzi o kod wyżej z wynik odejmowania 322-16 po pp_)
prosze napisał(-a):
Czy wszystkie pliki .pdf masz już rozpakowane? W jaki sposób liczyłeś w ilu liniach masz zmienić kod?
Napisałem sobie skrypt do rozpakowywania plików, więc to chwila i mam wszystko rozpakowane. A występowanie pp_CYFRA_ARABSKA liczyłem za pomocą plugina wyżej przy użyciu regexa
(?<=pp_)\d+(?:\'\d+)?
Ponieważ struktura PDFów (czasami JavaScript widoczny, czasami nie) jest nieco zmienna (chyba spis treści i indeksy mają jakiś zakamuflowany ten JavaScript), cięzko zatem podać dokładną liczbę wystąpień tego, co chcę zamienić.
Ostatnio edytowany przez menteith (2014-11-02 18:50:43)
Offline

Użytkownik


To teraz sprawdzimy ile jest wszystkich linii, które należy zmienić. Zrób tak. Wejdź do katalogu w którym masz rozpakowane pliki .pdf (jeżeli jeszcze ich nie rozpakowałeś to je rozpakuj) i wydaj takie polecenie
awk '/pp_/{a++; print $0, a}' $(for x in *.pdf; do echo "$x"; done) > wynik.txtPlik "wynik.txt" wrzuć na hosting plików.
Offline
Użytkownik

Polaczylem wszystkie pliki do jednego - w pluginie do Acrobata wyszło mi, że skasowało 3112 linków - ale nie ma pewności, czy wszystkie to pp_ .
Plik jest tutaj: http://pl.rghost.net/private/58868045/40d056afb72613dc121c421fe7481876
Offline

Użytkownik


Do tematu wrócimy za kilka dni ponieważ w tej chwili jestem poza domem.
Offline
Użytkownik

Jasne, to to wracamy za parę dni.
Offline

Użytkownik


Rozwiązałeś już swój problem?
Offline
Użytkownik

Niestety nie.
Offline

Użytkownik


To wykonaj jeszcze raz czynności z postu o numerze 30.
Offline