2017-11-24 15 views
7

के एसएसवीजी डेटा का उपयोग कर सर्वर साइड (PHP) पर एसवीजी और पीएनजी छवि कैसे बनाएं, मैंने कपड़े जेएस का उपयोग करके एक कैनवास बनाया है, जहां उपयोगकर्ता वहां व्यवसाय कार्ड बना सकता है। अब मैं स्केलेबल/प्रिंट करने योग्य छवि (एसवीजी & पीएनजी) बनाने के लिए संघर्ष कर रहा हूं।कपड़े जेएस

मैं toSVG कपड़े जेएस के डेटा का उपयोग कर सर्वर पक्ष पर एसवीजी और पीएनजी छवि बनाने के कई तरीकों की कोशिश कर रहा हूं। तो उस उपयोगकर्ता के बाद उस कार्ड को मुद्रित करने के लिए उस एसवीजी का उपयोग कर सकते हैं।

मैं नीचे दिए गए विकल्प की कोशिश की है (नीचे सभी लिंक एसओ ने मेरे प्रश्नों का जो मैं एक उपयुक्त रास्ता खोजने के लिए कहा है की बात कर रहे):
1) Generate SVG on php side using Canvas JSON
कोई सफलता
2) Using raw svg data generate png on server side
आंशिक सफलता: वर्ड रैपिंग, फ़ॉन्ट इश्यू इत्यादि जैसे मुद्दों का सामना करना भी प्रिंट करने योग्य छवि प्राप्त करने में सक्षम नहीं है। (यदि उच्च डीपीआई तो इस मुद्दे को संलग्न एसएस तरह दिखाई प्रयोग करके) एसएस नीचे की जाँच करें:

enter image description here

3) Generate Printable PDF using SVG raw data
आंशिक: मुद्रण योग्य पीडीएफ

4) generate svg using raw data of svg in imagick
प्राप्त करने में सक्षम नहीं कोई सफलता: svg छवि (बीजी समस्या, छवि समस्या) बनाने में सक्षम नहीं है।

5) सीधे कच्चे डेटा

का उपयोग कर एसवीजी बनाने
$file_name = uniqid($prefix).".svg"; 
$file_handle = fopen("$folder_name/".$file_name, 'w'); 
fwrite($file_handle, $raw_svg); 
fclose($file_handle); 

कोई सफलता: फ़ॉन्ट लोड हो रहा है नहीं है, स्केलेबल नहीं (इसका मतलब है प्रिंट करने योग्य गुणवत्ता)

तो मेरे सवाल का सबसे अच्छा तरीका है क्या है एसवीजी & पीएनजी बनाएं जो बीजी छवि, अपलोड की गई छवियां, diff प्रस्तुत करें। प्रिंट करने योग्य गुणवत्ता के साथ फोंट आदि।

नोट: मैं एसवीजी पर अधिक ध्यान केंद्रित कर रहा हूं क्योंकि ग्राहक पसंद करता है, अगर मैं पीएनजी के भीतर प्रिंट करने योग्य गुणवत्ता प्राप्त कर सकता हूं तो यह भी काम कर सकता है। इसके अलावा मैंने एसएनजी को पीएनजी वार्तालाप में प्राप्त करने के लिए कल्पना का उपयोग किया है। लेकिन प्रिंट करने योग्य गुणवत्ता प्राप्त करने में सक्षम नहीं है (उपरोक्त एसएस जैसे उच्च डीपीआई मुद्दे पर)।

+0

मैंने अपने सभी शोधों को शामिल करने का प्रयास किया है और मैंने अभी तक क्या प्रयास किया है। तो यदि कोई विकल्प है तो कृपया मुझे बताएं। Imagemagick या किसी भी विधि के विकल्प की तरह। तो मैं अपना वांछित आउटपुट प्राप्त कर सकता हूं। – DS9

+1

मुझे एसवीजी क्षमताओं के बारे में निश्चित नहीं है, लेकिन आप सर्वर पर फैंटॉमजेएस का उपयोग कर सकते हैं। यह मूल रूप से एक हेडलेस वेबकिट ब्राउज़र है जो उपयोगकर्ता के ब्राउज़र की तरह सामान प्रस्तुत कर सकता है। और फिर आप उसे एक छवि (पीएनजी) के साथ ही पीडीएफ में प्रस्तुत कर सकते हैं। आप अपने स्वयं के जेएस कोड को भी निष्पादित कर सकते हैं, जो और भी संभावनाएं खोल सकता है। शायद यह एक विकल्प है? आप shell_exec और इसी तरह का उपयोग कर PHP में एकीकृत कर सकते हैं। – matths

+1

वास्तविक toSVG डेटा के साथ समस्या क्या है? एक वास्तविक एसवीजी है। एसवीजी को पीएनजी में परिवर्तित करने के लिए imagemagick अच्छा नहीं है? – AndreaBogazzi

उत्तर

1

सामान प्रस्तुत करने का सबसे विश्वसनीय तरीका, आईएमएचओ, विभिन्न फ़ॉन्ट्स का उपयोग करके इनपुट वेब सामग्री से प्रिंट करने योग्य गुणवत्ता वाली पीडीएफ फाइलें उत्पन्न करने के लिए wkhtmltopdf का उपयोग करने पर विचार करें।

आप इसे अपने सर्वर में बाइनरी कॉपी और पेस्ट करके इंस्टॉल कर सकते हैं।

यह पहले से आता है और आप लोकप्रिय distros के लिए बाइनरी डाउनलोड करते हैं।

यह ब्राउज़र पर स्थापित किया जा सकता है, इस उदाहरण देखें:

आप इस तरह passthru का उपयोग कर php से wkhtmltopdf कॉल कर सकते हैं:

echo("<pre>"); 
passthru("/full/path/to/your/wkhtmltopdf input_html_with_svg_inside.html output.pdf 1>&2"); 
echo("</pre>"); 

बाद में, आप ImageMagick पैकेज से convert उपयोग कर सकते हैं कन्वर्ट करने के लिए उदाहरण के लिए यह एक पारदर्शी पीएनजी के लिए।

इसके अलावा, सर्वर पर फोंट स्थापित करें, आपको हमेशा सभी फोंट सही नहीं मिलेंगे, लेकिन आप मुफ्त में इंस्टॉल किए जा सकने वाले फ़ॉन्ट पैकेज ऑनलाइन पा सकते हैं। wkhtmltopng भी है।

एचटीएच।

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