जावास्क्रिप्ट के साथ पीडीएफ फाइलों को उत्पन्न करना


268

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

जवाबों:


446

मैंने सिर्फ jsPDF नाम की एक लाइब्रेरी लिखी है, जो अकेले जावास्क्रिप्ट का उपयोग करके पीडीएफ जेनरेट करती है। यह अभी भी बहुत छोटा है, और मैं जल्द ही फीचर और बग फिक्स जोड़ रहा हूँ। इसके अलावा ब्राउज़र में वर्कअराउंड के लिए कुछ विचार मिले जो डेटा यूआरआई का समर्थन नहीं करते हैं। यह एक उदार एमआईटी लाइसेंस के तहत लाइसेंस प्राप्त है।

इस प्रश्न के सामने आने से पहले मैंने इसे लिखना शुरू कर दिया और सोचा कि मैं वापस आऊंगा और आपको बता दूंगा :)

जावास्क्रिप्ट में पीडीएफ उत्पन्न करें

उदाहरण एक "हैलो वर्ल्ड" पीडीएफ फाइल बनाएं।

// Default export is a4 paper, portrait, using milimeters for units
var doc = new jsPDF()

doc.text('Hello world!', 10, 10)
doc.save('a4.pdf')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.5/jspdf.debug.js"></script>


10
क्या मैंने आंशिक रूप से jsPDF को प्रेरित किया था? मैंने jsPDF के बारे में उस दिन सीखा जब आपने इसकी घोषणा की थी। अब तक बहुत अच्छा लग रहा है। मैंने समाप्त किया प्रॉन के साथ जाना क्योंकि यह आसानी से मेरी आवश्यकताओं के लिए सबसे अच्छा पीडीएफ पीढ़ी का पुस्तकालय है। मैं अब भी अपने सभी काम ब्राउज़र में करना पसंद करूंगा क्योंकि मैं सकारात्मक नहीं हूं, मैं रूबी को उस सिस्टम पर ले जाऊंगा जिस पर मैं तैनात हूं। मैं jsPDF को बहुत करीब से देख रहा हूं। मैं मदद करना पसंद करूंगा लेकिन मेरा समय बहुत सीमित है। भविष्य में इसमें बदलाव हो सकता है।
अमीबा

7
आपने इसे कुछ हद तक प्रेरित किया :), मैं यह देखने के लिए इंटरनेट पर चारों ओर देख रहा था कि क्या यह पहले से मौजूद है और देखा कि कुछ लोग इसे उपयोगी पाएंगे। अगर आप मदद करना चाहें तो मुझे बताएं। मैं ट्विटर पर @MrRio हूं।
जेम्स हॉल

23
यह अभी भी बहुत जीवित है। 0.9.0rc2 आज जारी किया गया।
जेम्स हॉल

87
@JamesHall, मैं आपको यह लिखने के लिए आवश्यक सभी काम के लिए धन्यवाद देना चाहता हूं, और एमआईटी लाइसेंस के लिए इसे दुनिया को एक बेहतर स्थान बनाने के लिए जब आप इसे अपने लाभ के लिए व्यावसायीकृत कर सकते थे।
चार्ल्स बर्न्स 14

16
डाउनवोटर्स हमें अपने "बेहतर" विचारों या समाधान की पेशकश कर सकते हैं? यह एक उत्कृष्ट प्रयास है।
ओनुर येल्ड्रिम

138

एक और जावास्क्रिप्ट पुस्तकालय में उल्लेख के लायक है pdfmake

ब्राउज़र समर्थन jsPDF के रूप में मजबूत नहीं दिखाई देता है, और न ही आकृतियों के लिए कोई विकल्प प्रतीत होता है, लेकिन पाठ स्वरूपण के लिए विकल्प अधिक उन्नत हैं, तो विकल्प वर्तमान में jsPDF में उपलब्ध हैं।


7
इस उत्तर को बहुत अधिक अपग्रेड किया जाना चाहिए, pdfmake jspdf से बहुत अधिक मजबूत है। हालाँकि, केवल एक साइड नोट, यह PDFKit लाइब्रेरी के आसपास आवरण है।
vittore

2
एक और साइड नोट, jspdf में utf-8 समर्थन नहीं है और pdfmake में केवल डिफ़ॉल्ट फोंट के लिए utf-8 समर्थन है।
सिंह

"pdfmake.min.js - 0.1.22 - 9 घंटे पहले" यह मृत नहीं है, इस दिन अपडेट किया गया।
ज़ेनबेनी

दो खेल के मैदानों की तुलना करने से, मुझे ऐसा लगता है कि "ग्राफिक" पीडीएफ निर्माण में jsPDF अधिक लक्षित है, जबकि PDFmake को अच्छी तरह से स्वरूपित "सादे" दस्तावेज बनाने के लिए अधिक लक्षित किया गया है, ऐसा लगता है कि जेनेरिक पाठ स्वरूपण के लिए बहुत अधिक विकल्प हैं।
सीएसलोटी

क्या यह IE के अनुकूल है?
वाइल्डहैमर

59

मैं PDFKit को बनाए रखता हूं , जो pdfmake (यहां पहले से उल्लेखित है) को भी अधिकार देता है। यह नोड और ब्राउज़र दोनों में काम करता है, और सामान के एक समूह का समर्थन करता है जो अन्य पुस्तकालय नहीं करते हैं:

  • यूनीकोड ​​के लिए समर्थन के साथ, सब्सट्रेट फोंट एम्बेड करना।
  • उन्नत पाठ लेआउट सामान (कॉलम, पेज ब्रेकिंग, पूर्ण यूनिकोड लाइन ब्रेकिंग, मूल समृद्ध पाठ आदि) के बहुत सारे।
  • उन्नत टाइपोग्राफी के लिए और भी अधिक फ़ॉन्ट सामग्री पर काम करना (OpenType / AAT ligatures, प्रासंगिक प्रतिस्थापन, आदि)। जल्द ही आ रहा है: यदि आप रुचि रखते हैं तो फॉन्टकिट शाखा देखें।
  • अधिक ग्राफिक्स सामान: ग्रेडिएंट आदि।
  • ब्राउज़र और स्ट्रीम जैसे आधुनिक उपकरणों के साथ बनाया गया है। ब्राउज़र और नोड दोनों में उपयोग करने योग्य।

की जाँच करें http://pdfkit.org/ एक पूर्ण ट्यूटोरियल के लिए खुद के लिए देखने के लिए PDFKit क्या कर सकते हैं। और उदाहरण के लिए कि किस प्रकार के दस्तावेज़ों का उत्पादन किया जा सकता है, डॉक्स को पीडीएफ मार्किट से कुछ मार्केडाउन फ़ाइलों से उत्पन्न पीडीएफ के रूप में देखें : http://pdfkit.org/docs/guide.pdf

आप इसे यहां ब्राउज़र में सहभागी रूप से आज़मा सकते हैं: http://pdfkit.org/demo/browser.html


क्या यह सर्वर साइड लाइब्रेरी नहीं है? मुझे लगता है कि चर्चा क्लाइंट साइड जेएस लाइब्रेरी पर है।
ऐश कैटकेम

10
PDFKit नोड और ब्राउज़र दोनों में काम करता है जैसा कि उत्तर में बताया गया है। ब्राउज़र डेमो का लिंक देखें।
देवांगोवेट

क्या यह चित्रों को संपीड़ित करता है? मैं एक वेब ऐप पर काम कर रहा हूं, जो कैमस्कैनर के समान कार्य करता है और मैं संपीड़न और मल्टी पेज प्रारूप का लाभ उठाने के लिए जावास्क्रिप्ट के माध्यम से पीडीएफ निर्माण की तलाश कर रहा हूं।
ट्रेवर

@devongovett क्या आप अपने पुस्तकालय के बारे में मेरे प्रश्न को देख सकते हैं ?
नौ

8

एक और दिलचस्प परियोजना टेक्सलाइव.जेएस है

यह आपको ब्राउज़र में पीडीएफ में ला (TeX) संकलन करने की अनुमति देता है।


हैलो दुनिया उदाहरण अच्छी तरह से प्रस्तुत करता है, लेकिन पूरा करने के लिए लगभग 30s लेता है।
सैम सिप्पे

2

आप इस मुफ्त सेवा का उपयोग एक लिंक जोड़कर कर सकते हैं जो किसी भी यूआरएल से पीडीएफ बनाता है (जैसे http://www.phys.org ):

http://freehtmltopdf.com/?convert=http%3A%2F%2Fwww.phys.org&size=US_Letter&orientation=portrait&framesize=800&language=en


1
अद्यतन: जब मैं इस freehtmltopdf.com सेवा की जाँच करने गया तो उसने कहा कि यह अब उपलब्ध नहीं है। लगता है जैसे यह आश्चर्यजनक था!
मार्क ड्युइकर

अब जाँच की - काम करता है। और यह आश्चर्यजनक है, मैं एक सेवा का उपयोग करता हूं जहां मैं प्रत्येक पीडीएफ के लिए भुगतान करता हूं, और कोड करने की आवश्यकता है, यह एक ऐसी समस्या है।
सर्गेई सोब

-29

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

उपयोगकर्ता को फ़ाइल प्राप्त करने के लिए, आप एक सर्वर सबमिट करना चाहेंगे ताकि ब्राउज़र को बचाने के लिए डायलॉग को लाया जा सके।

उस के साथ, यह वास्तव में पीडीएफ उत्पन्न करने के लिए बहुत मुश्किल नहीं है। बस युक्ति पढ़ें।


1
यह बिल्कुल मुश्किल नहीं है, उदाहरण के लिए यह डेटा-यूआरआई en.wikipedia.org/wiki/Data_URI_scheme के साथ काम करने के लिए लगता है (मैंने इसे पहले किया है लेकिन मुझे याद नहीं है कि मैंने डेटा-यूआरआई का उपयोग किया है)।
ब्योर्न

58
आप इन दिनों आसानी से जावास्क्रिप्ट में फाइल बना सकते हैं। (मैं भविष्य से)
डेरेक 會 功夫 '

5
आजकल बहुत सरल है .. उदाहरण के लिए इसे देखें: github.com/ChenWenBrian/FileSaver.js
roy riojas

9
@FrankKrueger यदि आप अपना उत्तर हटाते हैं, तो आप 6 अंक अर्जित करेंगे: P
कामिल Kiełczewski

8
@FrankKreuger, "चश्मा पढ़िए चश्मा" लगभग SO पर सही उत्तर नहीं है।
कृष्णन वेंकटेश्वरन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.