2009-06-05 6 views
2

J'utilise iText pour créer un document RTF. Il aura quelques centaines de pages lorsqu'il sera terminé. Cependant, je continue d'obtenir une erreur hors mémoire, quand il a fini d'ajouter tous les différents paragraphes et tables au document, et essaye de créer réellement le fichier RTF (avec document.close();)Est-il possible de vider la sortie avec iText RTF (bibliothèque Java) progressivement? (erreur hors mémoire)

J'ai augmenté le La mémoire d'exécution avec -Xmx350m, mais il n'est pas possible de l'augmenter car l'ordinateur des utilisateurs n'aura plus autant de mémoire.

Existe-t-il un moyen d'écrire progressivement dans le document RTF, plutôt que dans un gros bloc à la fin?

Répondre

1

Je trouve que vous pouvez le mettre en cache explicitement sur le disque plutôt que la mémoire en utilisant:

Document document = new Document(); 
RtfWriter2 writer2 = RtfWriter2.getInstance(document, new FileOutputStream("document.rtf")); 
writer2.getDocumentSettings().setDataCacheStyle(RtfDataCache.CACHE_DISK); 
document.open(); 

Cela rend plus lent à générer, mais au moins il crée le fichier sans erreur. Cependant, je préférerais toujours une méthode qui crée progressivement le fichier si quelqu'un en connaît un.

Questions connexes