2017-08-23 4 views
0

Je générer PDF en utilisant iText 2 et ci-dessous est le codecode de itext 2 à itext 5.5

String xhtml = toXHTML(xml).replaceAll("<br>", "<br/>"); 
     ITextRenderer renderer = new ITextRenderer(); 
     renderer.setDocumentFromString(xhtml); 
     renderer.layout(); 
     File temp = File.createTempFile("test", ".pdf"); 
     temp.deleteOnExit(); 

     OutputStream os = new FileOutputStream(temp); 

     renderer.createPDF(os); 
     os.close(); 

Mais, lorsque je place itextpdf-5.5 jar.I reçois ci-dessous erreur

The type com.lowagie.text.DocumentException cannot be resolved. It is indirectly referenced from required .class files 

Je sais que certaines méthodes sont obsolètes. J'ai essayé d'utiliser la classe Document mais cela n'a pas fonctionné. Ai-je besoin de trouver des alternatives pour la méthode createPDF dans la nouvelle API ou est-il possible de faire en sorte que jar ne fasse pas référence à 'lowagie' qui est obsolète. Toute aide à ce sujet est si appréciée

+1

Le 5.5 n'utilise-t-il pas des packages différents pour les classes? – notanormie

+0

Je m'attendais à un nouveau pot, ne pas se référer à ceux obsolètes, mais l'erreur indique qu'il se réfère à «lowagie» qui est obsolète – Kiran

+0

Voir la réponse, vous devez fixer toutes les importations de com.lowagie à com.itextpdf et la plupart travail, dépend de la version et des méthodes d'utilisation. – notanormie

Répondre

2

Les paquets iText 2 commençaient par com.lowagie, tandis que les paquets iText 5 commençaient par com.itextpdf. Le remplacement de JAR ne fonctionnera pas dans un tel endroit. Vous devrez remplacer toutes les importations. Si vous utilisez une dépendance tierce qui utilise iText, cette erreur signifie que vous devez utiliser la version 2. Il y a eu un changement majeur de licence avec la version 5 d'iText, donc les deux ne sont pas interchangeables.

+0

Dans mes importations, je n'avais que le paquetage import org.xhtmlrenderer.pdf.ITextRenderer; Dans mes importations, je ne parle pas de 'lowagie' – Kiran

+0

Que vous ne pouvez pas remplacer iText 2 avec iText 5. Votre dépendance nécessite iText 2. La plupart des projets utilisent iText 2 en raison de changements de licence dans la version 5. – notanormie

+0

Fondamentalement, cela ne fonctionnera pas avec iText 5. Vous devez utiliser iText version 2. – notanormie