2012-07-02 45 views
6

Estoy trabajando con algunos PDF muy grandes, algunos de más de 7 GB de tamaño. Los archivos PDF tienen hasta 20,000 páginas y muchas imágenes a color de página completa. Me gustaría usar PDFBox para trabajar con los PDF, pero debido al tamaño obtengo OutOfMemoryError cuando intento abrir los PDF.PDFBox: trabajando con archivos PDF muy grandes.

estoy trabajando con la versión PDFBox-app-1.6.0, en Windows 7 usando IntelliJ, java 6.

Primero intentó escribir un sencillo programa que acaba de abrir el PDF en un PDDocument y hacer frente a cada página a otro PDDocument: http://ideone.com/arKhB

Siguiente He intentado utilizar el PDFBox CopyDoc ejemplo.

Ambos ejemplos se han quedado sin memoria.

Supongo que esto es porque PDFBox está tratando de leer todo el documento en la memoria. ¿Hay alguna forma de que solo se abra 1 página a la vez? Sé que sería un procesamiento más lento, pero por el momento no puedo procesar nada. .

+0

Ver también http://stackoverflow.com/questions/586257/read-pdf-uploadstream-one-page-at-a-time-with-java – DNA

+0

probablemente dividir el archivo pdf en una lista y recorrer la lista y lea cierta cantidad de páginas a la vez. – Jasonw

+0

@DNA - Gracias por el enlace. Había revisado todas las preguntas etiquetadas con PDFBox antes de publicarlas, pero había perdido esa en mi búsqueda. – Pengo

Respuesta

3

En el 2.0 * versiones, abra el PDF de esta manera:

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

Este uso de la memoria búfer configurará para utilizar sólo archivo (s) temporal (sin memoria principal) con el tamaño no restringido.

Cuestiones relacionadas