HTML फ़ाइलों को पीडीएफ में बदलना [बंद]


128

मुझे स्वचालित रूप से एक एक्सिसिटिंग (एक्स) एचटीएमएल-दस्तावेज़ से एक पीडीएफ फाइल उत्पन्न करनी होगी। इनपुट फ़ाइलें (रिपोर्ट) एक सरल, तालिका-आधारित लेआउट का उपयोग करती हैं, इसलिए वास्तव में फैंसी जावास्क्रिप्ट / सीएसएस सामान के लिए समर्थन की आवश्यकता नहीं है।

जैसा कि मैं जावा में काम करने के लिए उपयोग किया जाता हूं, एक समाधान जो आसानी से जावा-प्रोजेक्ट में उपयोग किया जा सकता है वह बेहतर है। इसे केवल विंडोज़ सिस्टम पर काम करने की आवश्यकता है, हालांकि।

ऐसा करने का एक तरीका यह संभव है, लेकिन अच्छी गुणवत्ता वाले आउटपुट का उत्पादन नहीं करता (कम से कम बॉक्स से बाहर) पीडीएफ फाइलों को बनाने के लिए CSS2XSLFO , और Apache FOP का उपयोग कर रहा है। मेरे सामने समस्या यह थी कि जब सीएसएस-विशेषताओं को अच्छी तरह से परिवर्तित किया जाता है, तो टेबल-लेआउट बहुत गड़बड़ हो जाता है, जिसमें टेबल सेल से पाठ बहता है।

मैंने जेरेक्स पर एक त्वरित रूप से ध्यान दिया, गेको प्रतिपादन इंजन का उपयोग करने के लिए एक जावा-एपीआई।

क्या इंटरनेट एक्सप्लोरर रेंडरिंग इंजन से प्रदान किए गए पेज को हथियाने और पीडीएफ-प्रिंटर टूल पर स्वचालित रूप से भेजने का कोई तरीका है? मुझे विंडोज़ में OLE प्रोग्रामिंग का कोई अनुभव नहीं है, इसलिए मेरे पास कोई सुराग नहीं है कि क्या संभव है और क्या नहीं है।

क्या आपके पास कोई विचार है?


3
मैंने हाल ही में एक जावा लाइब्रेरी डॉकबैग बनाया है जो एक्सएचटीएमएल को पीडीएफ दस्तावेजों में बदल सकता है। वर्तमान संस्करण कुछ भी उन्नत नहीं है, लेकिन अगर आपका एक्सएचटीएमएल टेम्प्लेट सरल है तो यह लाइब्रेरी काम आ सकती है।
जकुब तोर्बकी

मुझे लगता है कि जाने का तरीका यह है कि अनुवाद करने के लिए ब्राउज़र क्षमताओं का उपयोग करें। देखें stackoverflow.com/q/25574082/39998
डेविड Hofmann

मैं एक html से पीडीएफ उत्पन्न करने के साथ अटक गया हूं जिसमें सिरिलिक पत्र शामिल हैं। सिरिलिक अक्षरों को छोड़कर सब कुछ ठीक है जो छोड़े गए हैं। जो भी इस थोड़े समस्या है?
कृतिजन इलिव

@ क्रिशिलिव: मेरे पास इसी तरह के मुद्दे थे, और जहां तक ​​मुझे याद है, फॉन्ट का इस्तेमाल बहुत महत्वपूर्ण था। अधिकांश फ़ॉन्ट पूर्ण UTF8 वर्णों का समर्थन नहीं करते हैं, लेकिन निम्नलिखित को चाहिए: 'फ़ॉन्ट-परिवार: एरियल यूनिकोड एमएस;' (सीएसएस)। सही एन्कोडिंग का उपयोग करना सुनिश्चित करें (मैं हमेशा UTF-8 का उपयोग करने की सलाह
दूंगा

2
इस लिंक ने मुझे hmkcode.com/itext-html-to-pdf-use-java
Mateen

जवाबों:


73

फ्लाइंग सॉसर एक्सएचटीएमएल रेंडरर परियोजना पीडीएफ को एक्सएचटीएमएल outputting के लिए समर्थन हासिल है। एक उदाहरण यहाँ देखें


20
उड़न तश्तरी के साथ असली समस्या यह है कि यह पीडीएफ रेंडर करने के लिए itext का उपयोग करता है, जो कि एक AGPL v3 लाइसेंस प्राप्त है
डेविड हॉफमैन

11
फ्लाइंग सॉसर द्वारा उपयोग किए जाने वाले itext का संस्करण 2.0.8 है जो LGPL के तहत उपलब्ध था। केवल संस्करण संख्या 5 या इसके बाद के संस्करण अधिक प्रतिबंधात्मक लाइसेंस पर हैं। stackoverflow.com/questions/2692000/…
गैरी

8
मैं कहता हूँ कि फ्लाइंग सॉसर के साथ वास्तविक समस्या यह है कि इसके लिए एक अच्छी तरह से गठित और वैध XML दस्तावेज़ की आवश्यकता है। आपके HTML में एम्परसेंड जैसी कोई चीज़, या कुछ जावास्क्रिप्ट कोड जो आपके प्रदान किए गए HTML को सख्त XHTML नहीं बनाता है, को शामिल करके अनजाने में PDF रेंडरिंग को तोड़ना आसान है। हालांकि इसे स्वचालित परीक्षणों या कुछ प्रक्रिया से कम किया जा सकता है जिसमें XML सत्यापन शामिल है।
स्टीव

3
@ लेटरलफ्रैक्टल जहाँ तक मैं बता सकता हूँ, फ्लाइंग सॉसर 9.0.8 (नवीनतम संस्करण, मुझे लगता है) iText 2.1.7 का उपयोग करता है, जो एक अनुमेय लाइसेंस के साथ अंतिम iText संस्करण है --- LGPL। mvnrepository.com/artifact/org.xhtmlrenderer/flying-saucer-pdf/…
जोनाथन क्रॉसर

2
@JonathanCrosmer हाँ। पीडीएफ के लिए दो फ्लाइंगसॉस्टर पैकेज हैं, एक iText v2 के लिए और एक iText v5 के लिए है। यह मानते हुए कि दोनों में समान कार्यक्षमता है; एजीपीएल जोखिम की ओर कदम बढ़ाया जा सकता है।
लेटरलफ्रैटल

49

क्या आपने WKHTMLTOPDF की कोशिश की ?

यह एक सरल शेल उपयोगिता है, जो WebKit का एक खुला स्रोत कार्यान्वयन है। दोनों स्वतंत्र हैं।

हमने यहां एक छोटा ट्यूटोरियल सेट किया है

EDIT (2017):

अगर आज कुछ बनाना होता, तो मैं अब उस रास्ते पर नहीं जाता।
लेकिन इसके बजाय http://pdfkit.org/ का उपयोग करेगा ।
संभवतः ब्राउज़र में चलाने के लिए, इसकी सभी नोडज निर्भरता को अलग करना।


16
एक सीधे html- पेज-टू-पीडीएफ रूपांतरण के लिए, यह मेरे द्वारा देखे गए, मुफ्त या वाणिज्यिक किसी भी चीज़ से बेहतर है।
23

क्या यह एक गैर मैक ओएस पर काम करता है?
एरन मेडन

1
@, हम इसे लिनक्स पर उपयोग करते हैं। मुझे लगता है कि एक विंडोज़ संस्करण भी है
Mic

1
@ हाँ, एक विंडोज़ संस्करण भी है।
विकारी

विंडोज़ एक्सपी (संस्करण 0.9.9) पर परीक्षण किया गया और बहुत अच्छी तरह से काम करता है। इसके अलावा, स्थापित करने के लिए मशीन पर व्यवस्थापक अधिकारों की आवश्यकता नहीं है।
क्रिस्टोफर महान

44

IText की जाँच करें ; यह एक शुद्ध जावा पीडीएफ टूलकिट है जिसमें HTML से डेटा पढ़ने के लिए समर्थन है। मैंने इसे हाल ही में एक परियोजना में इस्तेमाल किया था जब मुझे हमारे सीएमएस से सामग्री खींचने और पीडीएफ फाइलों के रूप में निर्यात करने की आवश्यकता थी, और यह सब सीधा था। CSS और शैली टैग के लिए समर्थन बहुत सीमित है, लेकिन यह बिना किसी समस्या के तालिकाओं को प्रस्तुत करता है (हालांकि मैं स्तंभ की चौड़ाई निर्धारित करने में कभी कामयाब नहीं रहा)।

HTML से PDF बनाना कुछ इस तरह है:

Document doc = new Document(PageSize.A4);
PdfWriter.getInstance(doc, out);
doc.open();
HTMLWorker hw = new HTMLWorker(doc);
hw.parse(new StringReader(html));
doc.close();

9
यह एजीपीएल है, जीपीएल से भी बदतर लगता है, आपको खुला स्रोत होने की आवश्यकता है, भले ही आप बस पीडीएफ की सेवा करें और iText सर्वर साइड हो।
एरन मेडन

10
@ Eran, बस पिछले गैर-एजीपीएल संस्करण (com.lowagie: itext: 2.1.7 मावेन में) का उपयोग करें।
Nowaker

1
HTMLWorker XMLWorker के पक्ष में IText के नए संस्करणों में पदावनत किया गया है; हालाँकि, सीएसएस समर्थन दोनों मामलों में खराब है ( डेमो देखें ।tstsupport.com/xmlworker/itextdoc/… ) और मेरी जरूरतों के लिए पर्याप्त नहीं था। इसके विपरीत फ्लाइंग सॉसर एकदम सही था।
पिनो

आप LGPL संस्करण का उपयोग कर सकते हैं जो github.com/albfernandez/itext2
व्लादिमीर रोझकोव

4

यदि आपके पास धन है, तो राजकुमार एक्सएमएल को कुछ भी नहीं हराता है क्योंकि यह वीडियो दिखाता है


1
यदि आप राजकुमार के लिए एक सस्ता विकल्प तलाश रहे हैं, तो DocRaptor.com को आज़माएँ। यह इंजन के रूप में राजकुमार का उपयोग करता है।
जूली

और यदि आप सस्ता करना चाहते हैं, लेकिन अधिक विकल्पों के साथ, htm2pdf.co.uk का प्रयास करें - यह वेबकिट और उपयोगकर्ताओं को वास्तविक WYSIWIG
user1914292

3

क्या इंटरनेट एक्सप्लोरर रेंडरिंग इंजन से प्रदान किए गए पेज को हथियाने और पीडीएफ-प्रिंटर टूल पर स्वचालित रूप से भेजने का कोई तरीका है?

यह है कि ActivePDF कैसे काम करता है, जिसका अर्थ है कि आप जानते हैं कि आपको क्या मिलेगा, और इसका वास्तव में उचित स्टाइलिंग समर्थन है।

यह उन कुछ पैकेजों में से एक है जो मुझे मिला (कुछ साल पहले देखने पर) जो वास्तव में विभिन्न पेज-ब्रेक सीएसएस कमांड का समर्थन करता है।


दुर्भाग्य से, ActivePDF सॉफ़्टवेयर बहुत निराशाजनक है - चूंकि इसे रूपांतरणों के लिए पृष्ठभूमि में IE ब्राउज़र लॉन्च करना पड़ता है, यह काफी धीमा हो सकता है, और यह विशेष रूप से स्थिर भी नहीं है।

बीटा में वर्तमान में एक नया संस्करण है जो कि बहुत बेहतर माना जाता है, लेकिन मुझे वास्तव में इसे आज़माने का मौका नहीं मिला है, इसलिए यह नहीं पता कि यह कितना सुधार है।


उपयोगी उत्तर के लिए धन्यवाद। मुझे नहीं लगता कि ActivePDF वास्तव में कीमत की वजह से उपयुक्त है, लेकिन ऐसा कुछ मौजूद है, यह जानना अच्छा है।
panschk

GrabzIt's HTML to PDF API: Grabz.it/html-to-pdf-image-api.aspx उसी तरह से काम करता है, जो किसी ब्राउज़र में HTML को रेंडर करता है और फिर पीडीएफ बनाता है जिससे यह सुनिश्चित होता है कि कहीं अधिक सटीक पीडीएफ रूपांतरण हो।
user1474090

2

आप एक्सटेंशन के साथ हेडलेस फ़ायरफ़ॉक्स का उपयोग कर सकते हैं। यह दौड़ना बहुत कष्टप्रद है लेकिन यह अच्छे परिणाम देता है।

की जाँच करें इस उत्तर अधिक जानकारी के लिए।


अगर कोई समानांतर में मक्खी पर पृष्ठों को बदलने की जरूरत है, तो एक बहुत ही स्केलेबल समाधान की तरह ध्वनि नहीं करता है। यदि कुछ अनुरोधों के परिणामस्वरूप FF का उपयोग करने वाले रूपांतरण में परिणाम होता है, तो आपके सर्वर ने कुछ परिवर्तित पृष्ठों की सेवा करने के लिए केवल कुछ मेमोरी खो दी होगी। यह आपके सर्वर को एक डॉस के लिए खोल देगा।
एम.पी.

बेहतर लेकिन इसी तरह: github.com/ariya/phantomjs/wiki/Screen-Capture (हमारे अनुसार- weve-php.blogspot.com/2012/12// pdf में वास्तविक पाठ है, न कि rasterized)
nafg

0

यदि आप अपने प्रश्न के साइड बार को देखते हैं, तो आपको कई संबंधित प्रश्न दिखाई देंगे ...

आपके संदर्भ में, सरल विधि PDFCreator की तरह एक पीडीएफ प्रिंट ड्राइवर स्थापित करने और इस आउटपुट के लिए पृष्ठ प्रिंट करने के लिए हो सकती है ।


यह एक जावा समाधान कैसे है? यह एक विंडो प्रिंट ड्राइवर है।
ग्रे

ओपी ने स्पष्ट रूप से विंडोज का उल्लेख किया है। और मुझे लगता है कि अन्य प्रणालियों के लिए समान ड्राइवर हैं। ओपी ने केवल जावा को एक संभावित समाधान के रूप में उल्लेख किया है ...
फील्हो

0

Windows- केवल समाधान के लिए JNI के साथ Amyuni WebkitPDF का उपयोग किया जा सकता है। यह एक पीडीएफ से पीडीएफ / एक्सएएमएल रूपांतरण पुस्तकालय है, जो वाणिज्यिक और गैर-वाणिज्यिक उपयोग के लिए मुफ्त है।

यदि आउटपुट फ़ाइलों की तुरंत आवश्यकता नहीं है, तो बेहतर स्केलेबिलिटी के लिए कतार और कुछ पृष्ठभूमि प्रक्रियाओं को वहां से आइटम लेना, उन्हें परिवर्तित करना और फिर डेटाबेस या फ़ाइल सिस्टम पर संग्रहीत करना बेहतर हो सकता है।

सामान्य अस्वीकरण लागू होता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.