2011-05-06 12 views
25

शुरुआती बिंदु: मेरे पास ऐसा सर्वर नहीं है जो स्थिर फाइलों के अलावा कुछ भी प्रदान कर सके। और मेरे पास <body> में एक एसवीजी तत्व (गतिशील रूप से बनाया गया) है कि मैं एक वेक्टर प्रारूप, अधिमानतः पीडीएफ या एसवीजी में निर्यात करना चाहता हूं।पीडीएफ में एसवीजी एम्बेड करना (जेएस का उपयोग करके पीडीएफ में एसवीजी निर्यात करना)

मैंने downloadify के साथ पहले से मौजूद मौजूदा lib jsPDF का उपयोग करना शुरू कर दिया है। यह ठीक काम किया। दुर्भाग्यवश, यह एसवीजी का समर्थन नहीं करता, केवल पाठ।

मैंने एसवीजी छवियों को एम्बेड करने के लिए पीडीएफ प्रारूप की संभावनाओं और it seems को एक्रोबैट रीडर 5 (ImageViewer प्लगइन के साथ) सक्षम करने के लिए सक्षम किया है। लेकिन यह काम नहीं करता है। मैंने सफलता के बिना 3 अलग-अलग पीडीएफ पाठकों के साथ प्रयास किया है।

क्या इसका मतलब यह है कि पीडीएफ ने एसवीजी एम्बेडिंग समर्थन को गिरा दिया है? मुझे इस पर कुछ भी नहीं मिला है।

मेरे दो प्रश्न हैं; क्या इसे हल किया जा सकता है? और यदि हां, पीडीएफ के अंदर एसवीजी एम्बेड करने के लिए विनिर्देश क्या हैं? उस जानकारी के साथ, मैं स्वयं जेएसपीडीएफ में उस समर्थन का निर्माण कर सकता हूं।

ब्राउज़र समर्थन मांग सफारी, क्रोम और फ़ायरफ़ॉक्स हैं। एसवीजी का समर्थन करने वाले संस्करण।

उत्तर

19

किसी को भी एक जे एस-एकमात्र समाधान की तलाश के लिए: PDFKit बेहतर समाधान इन दिनों जे एस से PDF उत्पन्न करने के लिए हो रहा है, और यह सभी एसवीजी ज्यामिति पुरातन बॉक्स से बाहर (path ज्यामिति तार की व्याख्या भी शामिल है) का समर्थन करता है। मौजूदा एसवीजी सामग्री को प्रस्तुत करने के लिए जो कुछ भी आवश्यक होगा, वह एक डोम-वॉकर होगा जो सीएसएस स्टाइल और विरासत का ट्रैक रखता है, यदि आपको प्रतीकों आदि जैसी जटिल सामग्री की आवश्यकता नहीं है।

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

+0

एक प्रश्न। 1. http://pdfkit.org/demo/browser.html खोलें। 2. ओपन क्रोम विंडो का निरीक्षण करें। 3. शीर्ष मेनू पर "डिवाइस टूलबार टॉगल करें" आइकन पर क्लिक करें। 4. पृष्ठ को रीफ्रेश करें। 5. मैं मोबाइल दृश्य में दाएं विंडो पर पीडीएफ नहीं देख सकता। 6. क्या किसी को पता है कि मोबाइल व्यू पीडीएफ प्रस्तुत क्यों नहीं कर रहा है। ? क्या यह पीडीएफकिट मोबाइल पर पीडीएफ खोलने के साथ विशिष्ट या सामान्य समस्या है? –

5

क्या आपने WKHTMLTOPDF को आजमाया था? यह वेबकिट के आधार पर एक निःशुल्क टूल है।
हमने एक छोटा ट्यूटोरियल here.

सफारी या क्रोम के साथ मैक पर, आप एक पीडीएफ में एम्बेडेड एसवीजी के साथ एक HTML पृष्ठ सहेज सकते हैं।
चूंकि ये ब्राउज़र आंतरिक रूप से WKHTMLTOPDF का उपयोग करते हैं, हो सकता है कि यह आपके लिए भी काम करेगा।

+1

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

+0

I शामिल करने के लिए अपना जवाब संपादित कर लिया है, दुर्भाग्यवश, अभी भी wkhtmltopdf काम नहीं कर सकता है। यह केवल मेरे लिए खाली पेज पैदा करता है। –

+0

@ आर्ट-सोलोपोव, ऊपर वर्णित अनुसार, समय बदल गया है, आप पीडीएफकिट पर स्विच कर सकते हैं: http://pdfkit.org/docs/vector.html – Mic

8

मैं अपने खुद के प्रश्न का उत्तर दूंगा। मैं DocRaptor का उपयोग कर समाप्त हुआ जिसे जावास्क्रिप्ट से क्लाइंट-साइड कहा जा सकता है। यह तकनीकी रूप से मेरी समस्या हल करता है, भले ही यह एक गैर-मुक्त समाधान है। मैं इस सवाल का जवाब किसी सर्वर-साइड-समाधान हो सकता है, मैं proposed माइक द्वारा के रूप में इस्तेमाल कर सकते हैं wkhtmltopdfsvgToPdf:

+1

डॉक्रैप्टर के लिंक के लिए धन्यवाद। यदि आप कुछ होस्ट करने का मार्ग जाते हैं, तो आप WKHTMLTOPDF का उपयोग कर सकते हैं, क्योंकि यह मुफ़्त है और खुले – Mic

+1

को अपना उत्तर जोड़ा गया है और प्रिंस एक्सएमएल को वैकल्पिक के रूप में हटा दिया गया है, धन्यवाद! – Simeon

6

jsPDF कि के लिए एक प्लगइन है

https://github.com/ahwolf/jsPDF/blob/master/jspdf.plugin.svgToPdf.js

मैं इसे करने की कोशिश नहीं की है, लेकिन यह एक बाहरी API के उपयोग को त्यागकर और/या भरोसा करने के लिए होने की अनुमति दे सकता सर्वर-साइड समाधान पर।

+0

मैं वर्तमान में इस दृष्टिकोण की कोशिश कर रहा हूं लेकिन मुझे लगता है कि इससे मुझे एक खाली पीडीएफ मिल रहा है। क्या आप इस प्लगइन का उपयोग करने वाले किसी भी उदाहरण के बारे में जानते हैं? – BelgoCanadian

0

EVO एचटीएमएल पीडीएफ करने के लिए कनवर्टर एसवीजी पीडीएफ करने के लिए HTML में एम्बेडेड परिवर्तित करने के लिए समर्थन हासिल है। http://www.evopdf.com/demo/HTML_to_PDF/HTML5_Features/SVG_to_PDF.aspx: इस सुविधा को यहां के लिए एक उदाहरण देख सकते हैं।इसके लिए नमूना कोड है:

// Create a HTML to PDF converter object with default settings 
HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter(); 

// Convert the HTML page with SVG to a PDF document in a memory buffer 
byte[] outPdfBuffer = htmlToPdfConverter.ConvertUrl(urlHtmlWithSVG); 

// Send the PDF as response to browser 

// Set response content type 
Response.AddHeader("Content-Type", "application/pdf"); 

// Instruct the browser to open the PDF file as an attachment or inline 
Response.AddHeader("Content-Disposition", String.Format("attachment; filename=SVG_to_PDF.pdf; size={0}", outPdfBuffer.Length.ToString())); 

// Write the PDF document buffer to HTTP response 
Response.BinaryWrite(outPdfBuffer); 

// End the HTTP response and stop the current page processing 
Response.End(); 
संबंधित मुद्दे