2014-04-16 5 views
0

Je tente de générer une version PDF d'un code HTML tiers (en fait, il s'agit d'un fichier HTM). Ce code HTML pourrait changer à l'avenir et je n'ai absolument aucun contrôle sur celui-ci. Tout ce que je veux faire, c'est le convertir en PDF.Génération de PDF à partir d'un code HTML tiers sur Java

J'ai déjà essayé 2 solutions: iText (avec XmlWorker) et Flying-Saucer, mais sans succès jusqu'à présent.

Mon problème est que le fichier HTML est très hors des modèles par défaut. Exemples:

<link rel=File-List href="040602_inds_files/filelist.xml"> 

    <meta http-equiv=Content-Type content="text/html; charset=windows-1252"> 

Le premier n'a pas d'étiquette à proximité (iText plante) et le second n'a pas de guillemets sur la valeur « http-equiv » (plante soucoupe volante).

J'ai trouvé beaucoup de messages à propos de ce problème, mais tous utilisent leur propre code HTML, donc ils peuvent le réparer et réessayer. Mais je ne peux pas faire ça.

This est la page que j'essaie de convertir.

Voici ma méthode iText convertir:

 public static void convert(PdfWriter writer, Document document, String siteUrl) throws MalformedURLException, IOException { 
      XMLWorkerHelper.getInstance().parseXHtml(writer, document, 
        new BufferedReader(new InputStreamReader(new URL(siteUrl).openStream()))); 
     } 

Et voici ma méthode convertir soucoupe volante:

 public static void convertFS(String siteUrl, String fileName) throws com.lowagie.text.DocumentException, IOException { 
      OutputStream os = new FileOutputStream(fileName); 
      ITextRenderer renderer = new ITextRenderer(); 
      renderer.setDocument(siteUrl); 
      renderer.layout(); 
      renderer.createPDF(os); 

      os.close(); 
     } 

Des conseils? J'accepte les autres bibliothèques si elles sont décemment utilisables. Merci d'avance.

+0

vous pouvez Propably d'abord normaliser le code HTML en lisant avec une lib qui acceptent même mauvais -formed code HTML (par exemple jsoup), écrire à un emplacement temp avec toutes les balises et bien formé, puis faire la conversion PDF à partir de l'emplacement temp avec iText. – PeterMmm

Répondre

0

Vous pouvez d'abord analyser le fichier HTML en jsoup puis convertir le contenu dans un fichier HTML standard, vous pouvez enfin utiliser iText pour générer des PDF

+0

S'il vous plaît utiliser la capitalisation, il fait beaucoup mieux le texte –

+1

Thx pour me le rappeler – micmiu

+0

J'ai eu quelques problèmes de plus pour le travail complet, mais jsoup vraiment résolu celui-ci. BTW, je choisis Flying-Saucer. THX. – Sabaum

Questions connexes