2012-05-08 24 views
9

मुझे अपनी वेबसाइट जैसे सीएसवी या पीडीएफ में कुछ निर्यात कार्यों की पेशकश करनी है। क्या HTML पृष्ठों को पीडीएफ प्रारूप में परिवर्तित करने के लिए जावा के लिए एक शक्तिशाली और मुफ्त उपकरण है?पीडीएफ प्रारूप में एचटीएमएल पेज कैसे निर्यात करें?

+1

संभावित डुप्लिकेट: http://stackoverflow.com/questions/633780/converting-html-files-to-pdf – David

उत्तर

27

iText PDF साथ Flying Saucer API का उपयोग करके आप पीडीएफ करने के लिए HTML सामग्री बदल सकते हैं।
निम्नलिखित उदाहरण आपको समझने में मदद करते हैं, कुछ हद तक, एक्सएचटीएमएल से पीडीएफ में रूपांतरण।

उदाहरण फ्लाइंग सॉसर एपीआई का उपयोग करना:
आप निम्नलिखित पुस्तकालयों की आवश्यकता होती है:

  • कोर-renderer.jar
  • iText-2.0.8.jar

आप इन पा सकते हैं flyingsaucer-R8.zip में संसाधन।

example1:

// 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."); 

Example2: एक्सएमएल संसाधन का उपयोग एक्सएचटीएमएल प्रत्यक्ष इनपुट का उपयोग कर दस्तावेज़:

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."); 

उदाहरण iText API का उपयोग करना:
आप निम्नलिखित पुस्तकालयों की आवश्यकता होती है :

  • कोर-renderer.jar
  • itextpdf-5.2.1.jar

आप here पर इन संसाधनों पा सकते हैं।

Example3: HTML कार्यकर्ता का उपयोग करना:

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."); 
+0

एक देर से उत्तर के लिए खेद है .. ... htmlWorker.parse (नया स्ट्रिंग रीडर (sb.toString())); मुझे एक जेएसपी आउटपुट मिल रहा है ... मैं इसे HTML में कैसे परिवर्तित करूं? मुझे लगता है कि एसबी एक्सएचटीएमएल/एचटीएमएल सामग्री है। क्या वह सही है? – Harry

+0

आपके कोड के साथ अरबी अक्षरों को नहीं दिखाया गया है। क्या उधर रास्ता है ? – user4757345

+0

@ user4757345: क्या आप देखते हैं कि 'html' सामग्री प्रकार 'text/html; charset = utf-8" 'जैसा है। असल में यह एचटीएमएल निर्देश है ताकि पार्सर पीडीएफ पेज के निर्माण के दौरान समझता और उसका उपयोग करता है। –

-2

आप इसके लिए जेटीडी फ्रेमवर्क का उपयोग कर सकते हैं। यह एचटीएमएल को एक्सएचटीएमएल में परिवर्तित करेगा और फिर एक्सएसएल-एफओ में अनुवाद करेगा। इस वस्तु का उपयोग पीडीएफ उत्पन्न करने के लिए किया जा सकता है।

http://www.javaworld.com/javaworld/jw-04-2006/jw-0410-html.html

संबंधित मुद्दे