Robię program java, aby odczytać zaszyfrowane pliki PDF i wyodrębnić zawartość strony pliku według stron wraz z tekstem, obrazami i ich pozycjami (współrzędne x, y) w plik. Teraz używam PDFBox do tego celu i otrzymuję tekst i obrazy. Ale nie mogłem uzyskać pozycji tekstu i pozycji obrazu. Występują również problemy z odczytaniem zaszyfrowanych plików PDF.Odczytywanie lokalizacji tekstowych i graficznych (współrzędne xy) przy użyciu PDFBox
Odpowiedz
Spójrz na org.apache.pdfbox.examples.util.PrintTextLocations
. Użyłem go całkiem sporo i bardzo pomocne jest wykonanie analiz w układzie elementów i ramek obwiedni w dokumentach PDF. Ujawniło także przedmioty wydrukowane białym atramentem lub poza obszarem wydruku (prawdopodobnie dokumentujące znaki wodne lub "zapomniane" przedmioty wypchnięte przez autora z widoku).
Przykład użycia:
java -cp app/target/pdfbox-app-1.5.0.jar org.apache.pdfbox.examples.util.PrintTextLocations ~/tmp/mydoc.pdf >~/tmp/out-text-locations.txt
Dostaniesz coś takiego:
Processing page: 0
String[53.9,59.856995 fs=-6.0 xscale=6.0 height=-3.666 space=1.3320001 width=4.6679993]A
String[58.568,59.856995 fs=-6.0 xscale=6.0 height=-3.666 space=1.3320001 width=2.6640015]f
String[61.232002,59.856995 fs=-6.0 xscale=6.0 height=-3.666 space=1.3320001 width=1.6679993]e
...
które można łatwo analizować i wykorzystywać wykreślić pozycję elementu, obwiedni oraz „przepływ” (trajektoria przez wszystkie elementy) itd. dla każdej strony. Jestem pewien, że już wiesz, że format PDF może być prawie niemożliwy do konwersji na tekst. Jest to po prostu format opisu graficznego (tj. Dla drukarki lub ekranu), a nie język znaczników. Możesz łatwo zrobić plik PDF, który drukuje "Witaj świecie", ale to przeskakuje losowo przez pozycje znaków (i że używa różnych glifów niż jakiekolwiek kodowanie znaków ISO, jeśli tak zdecydujesz), co sprawia, że PDF jest bardzo trudny do konwersji na tekst. Nie ma pojęcia "słowo" lub "akapit". Na przykład dwukolumnowy dokument może być koszmarem, który można przeanalizować w tekście.
Dla drugiej części pytania, miałem dobre wyniki za pomocą Xpdf wersji 3.02, po utrwaleniu Xref.cc (marka XRef::okToPrint()
, XRef::okToChange()
, XRef::okToCopy()
i XRef::okToAddNotes()
wszystko wrócić gTrue
). To ma obsługiwać zablokowane dokumenty, a nie szyfrowane (są tam inne narzędzia).
- 1. Pobierz współrzędne XY punktu środkowego z zaznaczenia
- 2. Skuteczne odczytywanie dużych plików tekstowych
- 3. Odczytywanie pliku PNG przy użyciu Win32/C++
- 4. Odczytywanie pliku XML przy użyciu QXmlStreamReader
- 5. Odczytywanie pliku przy użyciu skanera Java
- 6. iOS CGPDFScanner do wyszukiwania lokalizacji pozycji tekstowych
- 7. Google Maps API: Współrzędne bieżącej lokalizacji iOS
- 8. Tworzenie animowanych efektów tekstowych przy użyciu menedżera NSLayoutManager?
- 9. Jak mogę dopasować podobne współrzędne przy użyciu Pythona?
- 10. Odczytywanie danych z programu Excel 2010 przy użyciu Microsoft.Office.Interop.Excel
- 11. Odczytywanie pliku JSON z S3 przy użyciu Python boto3
- 12. Asynchroniczne odczytywanie z bufora przedniego opengl przy użyciu wielu PBO
- 13. Uzyskuj współrzędne kliknięcia myszą na svg przy użyciu d3
- 14. Odczytywanie pliku programu Excel w Pythonie przy użyciu pandy
- 15. Odczytywanie informacji w formacie MP3 przy użyciu celu c
- 16. Odczytywanie pliku XML przy użyciu kodu JavaScript z lokalnego folderu
- 17. jak wykonać współrzędne transformacji afinicznej przy użyciu Pythona? część 2
- 18. Odczytywanie linii z pustymi polami z pliku przy użyciu wsadu
- 19. Odczytywanie nagłówków odpowiedzi przy użyciu funkcji $ http od Angularjs
- 20. J: Współrzędne przy określonej wartości
- 21. Parallax XY i rotacja - obliczenie dachówka
- 22. Jak zdobyć Lat, długie kliknięcie lokalizacji przy użyciu ulotki Api
- 23. Jak przekonwertować współrzędne na szerokość i długość geograficzną?
- 24. Pobieranie lokalizacji obrazu w Orchard CMS przy użyciu asp.net MVC
- 25. C++ przy użyciu funkcji przekazanej
- 26. Faceting w Solr przy użyciu pól "łańcuchowych", pól "tekstowych" i "pól" kopiowania
- 27. Czy PDFBox obsługuje kolory dodatkowe i separacje?
- 28. Odczytywanie i zapisywanie do tego samego pliku przy użyciu tego samego pliku fstream
- 29. Nie mogę wymyślić, jak używać PDFBox
- 30. Odczytywanie wartości klucza Json przy ulu/sql i iskrze