Zastanawiałem się, jak wyświetlić i edytować kod pliku PDF?
Przeglądając, nie chcę widzieć formatu binarnego, więc myślę, że
hexdump
może nie być tym, czego chcę. Próbowałemgedit
, ale nie można użyć metody kodowania do dekodowania treści PDF.Poprzez edycję chciałbym je wyszukać
/Fit
i zmienić na/XYZ
, na przykład, sed. Ale moje poleceniesed s/\/Fit/\/XYZ/ < 1.pdf > 2.pdf
wydaje się nie zmieniać wyglądu mojego pliku PDF, jak się spodziewałem, chociaż nie zgłasza żadnego błędu. Zastanawiałem się, czysed
rzeczywiście mogę pracować na plikach PDF tak, jakby były zwykłym tekstem?
Kontekst moich pytań można znaleźć w tym pytaniu . Mój system operacyjny to Ubuntu 10.10.
!
,\b
ig
myśli? Czy można to zrobić bez perla tylko za pomocą sed?g
oznacza zastąpienie wszystkich wystąpień w każdej linii, zarówno sed, jak i perl.!
jest separatorem; możesz wybrać (prawie) dowolny znak jako separators
polecenia (dotyczy to zarówno sed, jak i perla).\b
oznacza granicę słowa; istnieje w perlu, ale nie w sed.Odnośnie twojego pierwszego pytania („przeglądanie kodu źródłowego, ale bez plików binarnych”): istnieje kilka opcji, które masz do dekompresji wewnętrznych strumieni binarnych, które są dołączone do wielu obiektów.
Moim ulubionym narzędziem do tego jest QPDF , dostępny na wszystkich głównych platformach systemu operacyjnego. Następujące polecenie dekompresuje wszystkie strumienie i wszystkie strumienie obiektów:
Teraz możesz otworzyć plik PDF w dowolnym edytorze tekstu. (Wciąż mogą tam być binarne obiekty BLOB: na przykład pliki czcionek i profile ICC, co nie ma sensu, aby QPDF się rozwijał).
Do ponownej kompresji
expanded.pdf
ponownie po edycji, można uruchomić:(Ostrożnie przy ręcznej edycji plików PDF! Aby dobrze to zrobić, musisz wiedzieć dużo o ich wewnętrznej składni. Gdy tylko dodasz lub usuniesz pojedynczy bajt, możesz otrzymać komunikaty o błędach od czytników plików PDF, które mogą już nie być w stanie otworzyć, ponieważ PDF wewnętrzny ToC jest uszkodzony, która opiera się na obliczeniach bajtowych offsetu. Wystarczy zastąpienie
Fit
przezXYZ
ciągi powinny iść grzywny, chociaż ...)źródło
fix-qdf
programu, który jest częścią qpdf. Jednak nadal musisz być nieco ostrożny. Zobacz qpdf.sourceforge.net/files/qpdf-manual.html#ref.qdffix-qdf
. Dlatego jeśli chcesz zastąpić ciąg przez ciąg o różnej długości, jest to możliwe, ale musisz użyćfix-qdf
narzędzia. Powiedziałbym, że jest to użyteczny dodatek do odpowiedzi.sed
jest zorientowany na linie, co czyni go nieodpowiednim dla plików binarnych, które mają strukturę bloków, a nie linii.Spróbuj zamiast tego użyć bbe (bbe-.sourceforge.net).
Alternatywnie, zarówno Emacs (GNU i XEmacs), jak i vim płynnie otwierają pliki PDF. Oczywiście nie jest zbyt ładnie drukowany, ponieważ zawiera mieszany tekst i pliki binarne, ale wystarcza do edycji.
Istnieje plugin Pdftk dla vima, który ułatwia wszystko, pobierz tutaj (plik zip).
Jak zapewne wiesz, oba powyższe edytory mają potężne funkcje wyszukiwania i zamiany.
Ponadto konwersja pliku PDF do trybu QDF przed bardzo ułatwia edycję plików PDF.
źródło
sed
pomocą-b
przełącznika. jeśli to zadziała, dodam to do mojej odpowiedzi.-b
, jest specyficzny dla cygwina.Użyj LibreOffice lub OpenOffice, aby otworzyć plik PDF, wyświetlić go, zamienić, napisać nowy plik PDF itp. Myślę, że możesz go używać nawet z wiersza poleceń lub programowo, jeśli jest wiele dokumentów do przetworzenia.
Zauważ, że pliki PDF z niektórych źródeł, np. Skanerów, często zawierają strony jako obrazy, a nie jako tekst, więc nie będziesz miał szczęścia, jeśli użyjesz wyszukiwania i zamień.
źródło