web-dev-qa-db-fra.com

Comment exporter une page html au format pdf?

Je dois offrir certaines fonctions d'exportation vers mon site Web telles que CSV ou PDF. Existe-t-il un outil puissant et gratuit pour Java pour convertir les pages HTML au format PDF?

13
nimrod

En utilisant Flying Saucer API avec iText PDF vous pouvez convertir du contenu HTML en PDF.
Les exemples suivants vous aident à comprendre, dans une certaine mesure, la conversion de XHTML en PDF.

Exemples utilisant l'API Flying Saucer :
Vous avez besoin des bibliothèques suivantes:

  • core-renderer.jar
  • iText-2.0.8.jar

Vous pouvez trouver ces ressources dans flyingsaucer-R8.Zip .

Exemple1: Utilisation d'une ressource XML :

// if you have html source in hand, use it to generate document object
Document document = XMLResource.load( new ByteArrayInputStream( yourXhtmlContentAsString.getBytes() ) ).getDocument();

ITextRenderer renderer = new ITextRenderer();
renderer.setDocument( document, null );

renderer.layout();

String fileNameWithPath = outputFileFolder + "PDF-XhtmlRendered.pdf";
FileOutputStream fos = new FileOutputStream( fileNameWithPath );
renderer.createPDF( fos );
fos.close();
System.out.println( "File 1: '" + fileNameWithPath + "' created." );

Exemple2: Utilisation de l'entrée directe XHTML dans le document :

ITextRenderer renderer = new ITextRenderer();

// if you have html source in hand, use it to generate document object
renderer.setDocumentFromString( yourXhtmlContentAsString );
renderer.layout();

String fileNameWithPath = outputFileFolder + "PDF-FromHtmlString.pdf";
FileOutputStream fos = new FileOutputStream( fileNameWithPath );
renderer.createPDF( fos );
fos.close();

System.out.println( "File 2: '" + fileNameWithPath + "' created." );

Exemples utilisant l'API iText :
Vous avez besoin des bibliothèques suivantes:

  • core-renderer.jar
  • itextpdf-5.2.1.jar

Vous pouvez trouver ces ressources sur ici .

Exemple3: Utilisation de HTML Worker :

com.itextpdf.text.Document document =
        new com.itextpdf.text.Document( com.itextpdf.text.PageSize.A4 );
String fileNameWithPath = outputFileFolder + "PDF-HtmlWorkerParsed.pdf";
FileOutputStream fos = new FileOutputStream( fileNameWithPath );
com.itextpdf.text.pdf.PdfWriter pdfWriter =
        com.itextpdf.text.pdf.PdfWriter.getInstance( document, fos );

document.open();

//**********************************************************
// if required, you can add document meta data
document.addAuthor( "Ravinder" );
//document.addCreator( creator );
document.addSubject( "HtmlWoker Parsed Pdf from iText" );
document.addCreationDate();
document.addTitle( "HtmlWoker Parsed Pdf from iText" );
//**********************************************************/

com.itextpdf.text.html.simpleparser.HTMLWorker htmlWorker =
        new com.itextpdf.text.html.simpleparser.HTMLWorker( document );
htmlWorker.parse( new StringReader( sb.toString() ) );

document.close();
fos.close();

System.out.println( "File 3: '" + fileNameWithPath + "' created." );
31
Ravinder Reddy