Jestem ciekawy, czy ktoś ma doświadczenie w pisaniu JUnits dla plików PDF generowanych w Javie (szczególnie przez iText). Zrobiłem szybkie wyszukiwanie w google i nie mogłem znaleźć nic konkretnego. Do tej pory udało mi się sprawdzić, czy plik PDF został wygenerowany, ma określoną liczbę stron i dokument jest zamknięty. Ale nie udało mi się zweryfikować zawartości dokumentu. Czy ktoś może podać przykład tego, co zrobił w przeszłości, aby osiągnąć taki wynik? Czy też całkowicie się mylę i JUnits w przypadku moich plików PDF są przesadzone? DziękiPisanie JUnits dla plików PDF generowanych przez iText
Odpowiedz
Biorąc pod uwagę, że używasz Javy, powinienem spojrzeć na PDFBox (Apache). To, o co prosisz, jest dość trudne, ponieważ retransformowany plik PDF może nie być syntaktycznie identyczny z oryginałem. Być może trzeba pomyśleć o podróżach w obie strony.
Dokumenty takie jak PDF mogą być delikatne w porównaniu. Jeśli okaże się, że porównanie nie powiedzie się, może to niewiele wskazywać na miejsce niepowodzenia. Dokument PDF może być bardzo złożony (drzewa mocno rozgałęzione). Być może będziesz musiał poszukać kanonizacji dokumentu, aby je porównać (robię to dla dokumentów XML).
Domyślam się, że pełny test to przesada i że obecne testy są tak dobre, jak to możliwe, przy rozsądnych kosztach.
AKTUALIZACJA: Sprawdziłem PDFBox dla PDDocument.equals (PDDocument) i nie ma metody deep equals. Sugeruje to, że nie okazało się to opłacalne (wymaga rekurencji w wielu podwęzłach). Istnieje również wiele liczb rzeczywistych, więc wszystkie one muszą być porównane z tolerancją.
Metoda bitmapowa może działać dla ludzi, ale jest bardzo wrażliwa na problemy z liczbami rzeczywistymi - błąd zaokrąglenia zapisuje trochę w innym pikselu. Prawie na pewno zachowa się inaczej w nowej wersji systemu operacyjnego.
- 1. Przeczytaj pdf za pomocą iText
- 2. Jak mogę utworzyć formatowanie śródliniowe (pogrubienie i podkreślenie) dla plików PDF generowanych przez Prawnto w Railsach?
- 3. Brak plików generowanych przez Dagger2 dla testów JUnit
- 4. Jak scalać wiele plików pdf (generowanych w czasie wykonywania)?
- 5. HTML5 do serwera plików PDF
- 6. Czy istnieją jakieś alternatywy tworzenia plików PDF w formacie Java PDF do iText?
- 7. Używanie iText do konwersji HTML na PDF
- 8. Czcionka osadzająca tekst Itext w pliku PDF
- 9. Usuwanie plików tymczasowych utworzonych przez pdf()
- 10. Wyświetlanie favicon dla plików PDF
- 11. Python3: pisanie plików CSV
- 12. Dodawanie plików danych do projektów generowanych przez cmake
- 13. Ładowanie plików min.js Generowanych przez TypeScript z wymaganiem
- 14. Jak mogę analizować i zmniejszać rozmiar plików generowanych przez przeglądarkę?
- 15. Wątki i pisanie plików
- 16. Zależność SCons od plików generowanych podczas kompilacji
- 17. Czy należy używać gradientów SVG generowanych przez Colorzilla dla IE9?
- 18. Skrobanie w web Pythona dla treści generowanych przez javascript
- 19. Osadzanie przeglądarki plików PDF dla aplikacji PhoneGap
- 20. Proszę zasugerować przeglądarkę plików PDF dla WPF
- 21. Tworzenie bezpiecznego serwera hostingu dla plików PDF
- 22. Czy istnieje zestaw testów dla plików PDF?
- 23. Łączenie plików PDF i zachowanie rozszerzonych funkcji w Acrobat Reader
- 24. iText do generowania plików PDF ze znakami chińskimi, ale nie wyświetlane
- 25. iText Image Resize
- 26. Android PDF Rendering
- 27. Jak przekonwertować HTML na PDF za pomocą iText
- 28. Ustaw szerokość komórki tabeli w iText java pdf
- 29. Jak wygenerować plik PDF w orientacji Land Scape z łańcucha html za pomocą Itext 2
- 30. Dostosowywanie rdzeni generowanych przez dane akcesorów
Prawdopodobnie można odczytać plik PDF z powrotem (za pomocą programu iText [com.itextpdf.text.pdf.parser.PdfTextExtractor] (http://api.itextpdf.com/itext/com/itextpdf/text/pdf/parser/ PdfTextExtractor.html) lub może [com.itextpdf.text.pdf.PdfReader] (http://api.itextpdf.com/itext/com/itextpdf/text/pdf/PdfReader.html)), a następnie sprawdź zawartość. – wchargin
Proste podejście do porównywania plików PDF polega na renderowaniu ich do bitmap i porównywaniu bitmap - jest to o.k. tak długo, jak jesteś zainteresowany wyglądem plików PDF i nie interesują Cię metadane itp. –