2012-07-02 14 views
6

Pracuję z bardzo dużymi plikami PDF o rozmiarach powyżej 7 GB. Pliki PDF mają do 20 000 stron i wiele pełnych kolorowych obrazów. Chciałbym użyć PDFBox do pracy z plikami PDF, ale ze względu na rozmiar otrzymuję OutOfMemoryError przy próbie otwarcia plików PDF.PDFBox: praca z bardzo dużymi plikami PDF.

pracuję z wersji PDFBox-app-1.6.0 na Windows 7 przy użyciu IntelliJ, Java 6.

Najpierw próbowałem napisanie prostego programu, który właśnie otworzył PDF w PDDocument i radzenia sobie każdą stronę do innego dokumentu PDD: http://ideone.com/arKhB

Następnie próbowałem użyć przykładu PDFBox CopyDoc.

W obu przykładach zabrakło pamięci.

Zakładam, że to dlatego, że PDFBox próbuje odczytać cały dokument w pamięci. Czy istnieje sposób, aby otworzyć tylko jedną stronę na raz? Wiem, że będzie to wolniejsze przetwarzanie, ale w tej chwili nie mogę nic przetworzyć. .

+0

Zobacz także http://stackoverflow.com/questions/586257/read-pdf-uploadstream-one-page-at-a-time-with-java – DNA

+0

prawdopodobnie podzieli plik pdf na listę i przegląda listę i czytać określoną liczbę stron na raz. – Jasonw

+0

@DNA - Dzięki za link. Sprawdziłem każde pytanie oznaczone tagiem PDFBox przed opublikowaniem, ale przegapiłem je podczas wyszukiwania. – Pengo

Odpowiedz

3

W 2,0 * wersje, otworzyć PDF tak:

PDDocument doc = PDDocument.load(file, MemoryUsageSetting.setupTempFileOnly()); 

Taka konfiguracja będzie wykorzystanie pamięci buforowania używać tylko tymczasowy plik (i) (brak głównego pamięci) o nie ograniczonej wielkości.

Powiązane problemy