IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Documents Java Discussion :

Convertir HTML > PDF


Sujet :

Documents Java

  1. #1
    Membre habitué
    Inscrit en
    Décembre 2002
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 186
    Points : 130
    Points
    130
    Par défaut Convertir HTML > PDF
    salut
    je dois générer des fichiers pdf à partir d'un contenu html

    le client veut garder la meme charte graphique pour la communication (site web, mail, fax et pdf)

    il n'y a que le pdf qui pose probleme

    g essayé avec itext (exemple du tutorial) mais ce n'est pas au point

    on a pas le temps de se lancer dans une transformation xslt
    g googlé pas mal mais rien trouvé
    est ce que vous connaissez un api java qui fait ca facilement?


    [Modéré par Didier] : ajout de tag dans le titre - Les règles du forum Java

  2. #2
    Membre habitué
    Inscrit en
    Août 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Août 2005
    Messages : 124
    Points : 133
    Points
    133
    Par défaut
    j'ai testé FOP et iText, et j'ai opté pour iText, mais il faut passez par un Saxparser pour traduire les balises html en fonction iText:

    un bout de mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    package reference.util.export;
     
    import java.util.Stack;
     
    import org.xml.sax.Attributes;
    import org.xml.sax.ContentHandler;
    import org.xml.sax.Locator;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.LocatorImpl;
     
    import reference.util.iText.ITextFormat;
     
    import com.lowagie.text.Document;
     
    public class SimpleContentHandler implements ContentHandler {
     
    		private Locator locator;
     
    		private Document document;
     
    		private Stack textStack; 
    		private Stack baliseStack = new Stack(); 
     
    		private boolean multiOpen = false;
    		private boolean multiClose = false;
    		private boolean closeToOpen = false;
    		private boolean openToClose = false;
     
    		private String partStr;
     
            public SimpleContentHandler(Document doc, Stack text, String partName ) {
            	super();
            	// On definit le locator par defaut.
            	locator = new LocatorImpl();
            	document = doc; 
            	textStack = text;  
            	partStr = partName;//initialisation du nom de la partie
            }
     
            public void setDocumentLocator(Locator value) {
            	locator =  value;
            }
     
            public void startDocument() throws SAXException {
            	}
     
            public void endDocument() throws SAXException {
            	}
     
            public void startPrefixMapping(String prefix, String URI) throws SAXException {
            	}
     
            public void endPrefixMapping(String prefix) throws SAXException {
            	}
     
            public void startElement(String nameSpaceURI, String localName, String rawName, Attributes attributs) throws SAXException {
     
            	if (multiOpen) textStack.add(""/*"multiOpen"*/);
            	else if (closeToOpen) textStack.add(""/*"closeToOpen"*/);
        		baliseStack.add(localName); 
        		ITextFormat.addBaliseList(baliseStack);
     
        		openToClose = true;
        		multiOpen = true;
        		closeToOpen = false;
        		multiClose = false;
     
                //System.out.println("Ouverture de la balise : '" + localName +"'"); 
            	/*if ( ! "".equals(nameSpaceURI)) { // espace de nommage particulier
            		System.out.println("  appartenant a l'espace de nom : "  + nameSpaceURI);
            	}*/   
        		for (int i = 0; i < attributs.getLength(); i++) { // on parcourt la liste des attributs 
        			//System.out.println( i +  attributs.getLocalName(i) + "' = '" + attributs.getValue(i) +"'");  
        		} 
            }
     
            public void endElement(String nameSpaceURI, String localName, String rawName) throws SAXException {
     
            	if (multiClose) textStack.add(""/*"miltiClose"*/);
            	else if (openToClose) textStack.add(""/*"openToClose"*/);
     
            	baliseStack.remove(baliseStack.lastElement());  
        		ITextFormat.addBaliseList(baliseStack); 
     
        		multiOpen = false;
        		closeToOpen = true;
        		multiClose = true;
        		openToClose = false;
     
            	//System.out.print("Fermeture de la balise : '" + localName + "'");
            	/*if ( ! "".equals(nameSpaceURI)) { // name space non null
            		System.out.print("appartenant a l'espace de nommage : " + localName);
            	}*/ 
            }
     
            public void characters(char[] ch, int start, int end) throws SAXException {
     
            	multiOpen = false;
            	closeToOpen = false;
            	multiClose = false;
            	openToClose = false;
     
            	String content = new String(ch, start, end);
                    /* System.out.println("#PCDATA : '" + content + "'"); */
                    textStack.add(content);
            }
     
            public void ignorableWhitespace(char[] ch, int start, int end) throws SAXException {
                    System.out.println("espaces inutiles rencontres : ..." + new String(ch, start, end) +  "...");
            }
     
            public void processingInstruction(String target, String data) throws SAXException {
                    System.out.println("Instruction de fonctionnement : " + target);
                    System.out.println("  dont les arguments sont : " + data);
            }
     
            public void skippedEntity(String arg0) throws SAXException {}
     
    }
    Utilise Xerces pour parser et après bon courage, le résultat et super quand tu t'y met avec iText. ma page html et mon pdf son nikel[/quote]
    Tout comme la vie, on ne participe pas à une guerre pour la perdre !!!
    PinguY4Ever

  3. #3
    Membre averti
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Points : 427
    Points
    427
    Par défaut
    Tu utilises Spring il me semble. Pourquoi ne pas regarder du coté de Spring MVC ?
    Tu devrais pouvoir trouver ton bonheur en regardant cet exemple qui utilise JasperReports (basé sur iText il me semble). Je n'ai pas vraiment parcouru cet exemple mais, à première vue, ca à l'air de coller avec ton besoin.
    Il existe un plug-in WYSIWYG de jasper pour Eclipse.

  4. #4
    Membre habitué
    Inscrit en
    Décembre 2002
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 186
    Points : 130
    Points
    130
    Par défaut
    salut

    je ne connais pas springmvc: est ce que c yet another struts-like?!

    pour l'instant j'utilise com.lowagie.text.html.SAXmyHtmlHandler fourni avec itext + xerces mais ca me sort un java.net.MalformedURLException: no protocol: ... qq soit le html.

    je vais regarder jasper si c pas trop long!

    merci des reponses

  5. #5
    Membre averti
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Points : 427
    Points
    427
    Par défaut
    Spring MVC est un framework MVC intégré à Spring.

    Les avantages :
    - framework non intrusif, peu de dépendance vis-à-vis du framework : par exemple, on n'est pas obligé d'étendre des classes du framework pour faire un binding dynamique des paramètres d'une requete dans un objet métier...le framework est essentiellement basé sur des interfaces et est ouvert à l'ajout de nouvelles fonctionnalités
    - Spring MVC fournit un certain nombre d'implémentations de controleurs pour des usages courants (wizard, validation, data-binding, gestion de formulaires, gestion des erreurs)
    - Spring MVC est indépendant de la technologie utilisée pour la vue (JSP, Velocity, Excel, PDF...) et est ouvert à l'ajout de nouvelles implémentations grâce à son architecture indépendante de l'API Servlet,
    - hautement configurable et très flexible, il offre en plus une réelle cohérence avec le reste de l'application si celle ci utilise Spring,
    - c'est le fruit du travail d'un membre de l'expert group pour plusieurs JSR (Servlet 2.4, JDO 2.0),
    - Spring MVC est également très facilement testable,
    - il existe des extensions pour étendre les fonctionnalités du framework : WebFlow et Acegi.

    Les inconvénients :
    - ce n'est pas Struts,
    - il y en a certainement d'autres mais je ne les ai pas encore rencontré (j'ai encore assez peu d'expérience dans cette partie de Spring)

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 79
    Points : 72
    Points
    72
    Par défaut
    salut,

    Je voulais savoir si vous aviez trouvez votre bonheur, j'ai un travail similaire de conversion de html vers pdf à effectuer.

  7. #7
    Membre VIP

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 74
    Points : 104
    Points
    104
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par mirak63
    Je voulais savoir si vous aviez trouvez votre bonheur, j'ai un travail similaire de conversion de html vers pdf à effectuer.
    Si possible, ajoutez vos impressions aussi à cette page: http://itext.ugent.be/library/question.php?id=40

Discussions similaires

  1. Convertir HTML en PDF via ItextSharp XmlWorker
    Par DeadPooleuh dans le forum VB.NET
    Réponses: 0
    Dernier message: 11/06/2015, 10h34
  2. Convertir HTML vers PDF avec Table des Matieres
    Par chalumea dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 29/07/2008, 16h13
  3. Depuis le browser, comment convertir lapage html en pdf
    Par pierrot10 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 01/11/2006, 13h16
  4. Installer un cgi pour convertir des html en pdf
    Par sami_c dans le forum Apache
    Réponses: 3
    Dernier message: 23/03/2006, 14h36
  5. [LOGICIEL] Convertir HTML en PDF (tutoriel)
    Par rabobsky dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 05/10/2005, 11h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo