Wydobywanie obrazów tła z pliku PDF?

8

Mam plik PDF zawierający mapy budynku, w którym pracuję, tutaj:

http://www.libsys.und.edu/dev/FloorPlans_All.pdf

Oryginalne pliki źródłowe zostały utracone i poproszono mnie o wyodrębnienie obrazów map, najlepiej bez tekstu i ikon, które zostały na nich nałożone. Okazało się to denerwująco trudne.

Do tej pory wypróbowałem następujące programy GUI:

  • Adobe Reader: pozwala mi zaznaczać tekst, ale nie obrazy tła
  • Przeglądarka plików PDF FoxIt: pozwala mi zaznaczać tekst, ale nie obrazy tła
  • XPDF w systemie Ubuntu 10.10: pozwala mes wybierać tekst, ale nie obrazy tła

A także następujące programy wiersza polecenia:

  • pdfimages: wyodrębnia ikony wskazujące łazienki, ale nie obrazy tła
  • pdftohtml: to samo co pdfimages, a ponadto tworzy źle oznakowany dokument HTML
  • pdfextract: to samo co pdfimages
  • konwersja: pomyślnie zapisane obrazy, ale z wypalonym tekstem

Próbowałem nawet ręcznie otworzyć plik PDF w edytorze tekstu i wyodrębnić obiekty strumienia, wklejając je do nowego pliku i zapisując go z rozszerzeniem .jpg, .png lub .bmp (każdy z kolei). Biorąc pod uwagę, jak mało wiem o wewnętrznej strukturze plików PDF, nic dziwnego, że to nie zadziałało.

Więc ... czy jest jakiś sposób, aby odzyskać obrazy mapy z tej rzeczy bez uzyskiwania tekstu i ikon?

Will Martin
źródło
Sposób, w jaki zwykle rozwiązuję tego rodzaju zadanie: (1) Użyj qpdfdo konwersji części binarnych na ASCII, o ile to możliwe. (2) Użyj edytora tekstu, aby uczynić cały tekst niewidocznym, którego nie chcę widzieć na ekranie ani na wydrukach (można to łatwo i bez uszkodzenia tabeli XRef przełączać niewidzialną flagą). (3) Ponownie destyluj wynik za pomocą Ghostscript, aby maksymalnie zmniejszyć jego rozmiar. - Niestety, nie można już pobrać pliku w celu zademonstrowania procedury ...
Kurt Pfeifle

Odpowiedzi:

7

Możesz pobrać bibliotekę XPDF ze strony http://www.foolabs.com/xpdf/download.html dla systemów Linux i Windows. Następnie uruchom pdfimages -j input.pdf outputi powinieneś dostać output-000.jpg, output-001.jpgitp. Sprawdź także http://linuxcommand.org/man_pages/pdfimages1.html, aby uzyskać więcej opcji użytkowania.

mybluevan
źródło
1
Korekta, wygląda na to, że obraz jest grafiką wektorową bezpośrednio osadzoną w pliku PDF. Spróbuj otworzyć go w czymś takim jak Inkscape lub Adobe Illustrator, który obsługuje grafikę wektorową.
mybluevan
Ach HA! Mapy to grafika wektorowa - nic dziwnego, że miałem takie problemy! Wygląda na to, że Inkscape dobrze go otworzył i mogę edytować go według własnego uznania. Dzięki!
Will Martin
2

Ok, po tym, jak bawiłem się tym przez 5 minut, moja analiza jest taka, że ​​PDF jest jeszcze dziwniejszy, niż początkowo myślałem, i to coś mówi.

Nie jestem pewien, jaki jest twój budżet, ale dzięki Acrobat Pro Extended 9 możesz użyć:

A. Narzędzia, edycja zaawansowana, narzędzie do retuszu

-Select All
-Right click, Properties
-Text tab
-Select a standard font (e.g. Arial), close
-Hit Delete

B. Narzędzia, edycja zaawansowana, narzędzie Retup Object Tool

-Wybierz obiekt (możesz uzyskać większość, ale nie wszystkie z nich (np. Nie można wybrać ikon komputerów studentów), a następnie usuń

Oto jak wyglądała strona 1 po szybkim czyszczeniu: http://dl.dropbox.com/u/7434256/p1test.pdf

Craig H.
źródło
Dziwne to mało powiedziane. Nie znam historii tego pliku, ale Acrobat Pro 8 sprawił nam problemy. Inkscape jednak załatwił sprawę, dzięki Bogu. Teraz przekonwertuj to wszystko na odpowiednie pliki SVG, z których możemy generować grafiki rastrowe z ...
Will Martin
1
Praca wykonana na oryginalnym pliku PDF (który niestety nie jest już dla mnie dostępny) nie jest najlepsza. Twój plik ma nadal ~ 3 MB. Zawiera dużo + wiele nieużywanych obiektów. Zawiera nawet instancję /AAoperatora (dla akcji automatycznej ), co czyni go potencjalnie niebezpiecznym plikiem PDF. Ghostscript był w stanie sprowadzić go do 60 kB, nie tracąc żadnej widocznej zawartości. (Metadane zawarte w pliku rozciągają się na 17 różnych obiektów. Metadane als sugerują, że istnieje 17 różnych wersji / modyfikacji tego pliku od czasu jego utworzenia w dniu
18.01.2011 r
@pipitas Cieszę się, że sprawdziłem to jeszcze raz, okazało się, że Apache nie działa na tym serwerze. Oryginalny plik PDF jest ponownie dostępny. Nadal jest to irytujące. Od tamtej pory odkryłem, że mapy zostały wygenerowane z plików AutoCAD DXF, które powodują, że grafika wektorowa jest bardzo brzydka. Na każdej mapie znajdują się setki indywidualnych ścieżek, z których każda jest pojedynczą linią z dwoma punktami końcowymi. Prawdopodobnie ułatwiło to architektowi zmianę poszczególnych odcinków ściany lub cokolwiek innego, ale jest to uciążliwe dla tyłka.
Will Martin
@Will Martin: Ouch !, jest to dość duży plik PDF zawierający wiele wewnętrznych, ukrytych aktualizacji plików (a zatem: śmieci z punktu widzenia użytkownika). - 16 stron na 16 MB jest raczej „ciężkie” dla prostego wyglądu grafiki wektorowej. Co najmniej 16 różnych warstw („Treść opcjonalna” w języku PDF), po jednej na każdą stronę. Wolę nie przedzierać się przez ten bałagan tylko za pomocą edytora tekstu ...
Kurt Pfeifle
2
@pipitas: Dzięki - uczciwe punkty. Chociaż nie opisałbym tego, co zrobiłem jako „pracę” - właśnie demonstrowałem (po kilku minutach zabawy), że jest to możliwe dzięki Acrobat. Gwarancja zwrotu pieniędzy i tak dalej. ;)
Craig H
1

Weź plik PDF utworzony przez Craiga H i zoptymalizuj go nieco, uruchamiając go za pomocą Ghostscript. W systemie Windows wiersz poleceń to:

gswin32c.exe ^
   -o p1test-gs-optimized.pdf ^
   -sDEVICE=pdfwrite ^
   -dPDFSETTIINGS=/prepress ^
    p1test.pdf

W systemach Linux / Unix / Mac OS X:

gs \
   -o p1test-gs-optimized.pdf \
   -sDEVICE=pdfwrite \
   -dPDFSETTIINGS=/prepress \
    p1test.pdf

Spowoduje to zmniejszenie rozmiaru pliku z 3,000 kB do około 60 kB bez utraty zawartości. Następnie importowanie go do programu Inkscape (lub InDesign, Illustrator, ...) powinno być znacznie szybsze ....

Kurt Pfeifle
źródło
1

... możesz spróbować Photoshopa. Odczytuje pliki PDF i jest „możliwe”, że pochodzi z PS i prawdopodobnie nadal ma warstwy ... ale jest to bardzo długa perspektywa.

aart12
źródło
0

W środowisku Linux użyłem pdfmod do wyodrębnienia wszystkich obrazów za jednym razem. Zobacz https://wiki.gnome.org/Apps/PdfMod lub, dla użytkowników Ubuntu, https://apps.ubuntu.com/cat/applications/pdfmod/

Aby pobrać i zainstalować go w Ubuntu, wystarczy wpisać sudo apt-get install pdfmod.

  • Uruchom GUI pdfmod (wpisz w pdfmoddesce rozdzielczej lub terminalu wiersza poleceń)
  • Otwórz dokument PDF
  • Wybierz wszystkie strony (lub dowolne, z których chcesz wyodrębnić obrazy)
  • W menu Edycja pojawi się opcja wyodrębnienia jak największej liczby zdjęć w wybranym zakresie ( export n imagesprzy n odpowiedniej liczbie). Możesz również uzyskać dostęp do tego polecenia, najeżdżając myszką na zaznaczenie i aktywując menu lokalne (kliknij prawym przyciskiem myszy, aby wyświetlić prawą rękę).
  • Gdy to zrobisz, otworzy się nowe okno, w którym wybierzesz lokalizację, w której chcesz zapisać obrazy.

Mam nadzieję że to pomoże.

XavierStuvw
źródło
Przeczytaj Jak polecić oprogramowanie, aby uzyskać porady dotyczące tego, jak powinieneś polecać oprogramowanie. Podaj więcej niż tylko link, na przykład dodatkowe informacje o samym oprogramowaniu i o tym, jak można go użyć do rozwiązania problemu w pytaniu. Możesz nawet dołączyć przykładowe wiersze poleceń.
DavidPostill
@DavidPostill. Dzięki za zwrócenie na to uwagi. Gotowe, wierzę.
XavierStuvw
Znacznie lepiej ...;)
DavidPostill
Teraz wiem, czego mogę wymagać od odpowiedzi na moje posty :-)
XavierStuvw 11.04.16
-1

Otwórz dokument na ekranie, powiększ obraz, aby był jak największy, ale cały jest nadal widoczny. Naciśnij klawisze alt + prnt scrn (lub odpowiednik w systemie operacyjnym), aby wykonać zrzut ekranu programu. Teraz otwórz farbę lub swój ulubiony edytor zdjęć (Photoshop, Gimp itp.) Wklej na obraz i wykadruj wszystko, czego nie chcesz.

Will Gunn
źródło
Obejmuje to również ikony znajdujące się nad obrazem tła na zrzutach ekranu, a także używa rozdzielczości ekranu. Musi być lepszy sposób.
Zachiel