दिलचस्प पोस्ट
मैं सूची <टी> से लेकर एक वर्ग के सदस्यों को क्रमबद्ध करने के लिए json.net कैसे प्राप्त करूं? बीटीआरआई कार्यान्वयन में विभाजन गलती क्लियरिंग सूचियों के विभिन्न तरीकों एक अनाम (अनलिंक लेकिन खुली) फाइल को पुन: लिंक करना Int सरणी में सबसे लोकप्रिय तत्व खोजें कौन सा निर्भरता इंजेक्शन उपकरण मैं इस्तेमाल करना चाहिए? मैं कैसे git शाखाओं को संग्रहित कर सकता हूँ? रैखिक अनुक्रमण, तार्किक अनुक्रमण, और यह सब IIS को प्रकाशित करें, पर्यावरण चर सेट करना कैसे asp.net में gzip संपीड़न को लागू करने के लिए? मैं JSF प्रबंधित बीन गुणों को जावास्क्रिप्ट समारोह में कैसे पास कर सकता हूं? पायथन में स्ट्रिंग्स से HTML स्ट्रिप करें जेनरिक के साथ एन्यूम कैसे कार्यान्वित करें? स्वचालित रूप से सबवर्सन अपरिवर्तित फ़ाइलें निकालें वर्ण संकेत और वर्ण सरणी का उपयोग करने के बीच का अंतर

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

एक एसवीजी फ़ाइल को पीडीएफ में प्रोग्राम बदलने के बारे में कैसे जाना होगा? (मुझे पीडीएफ बनाने से पहले एसवीजी को कुछ मामलों में बदलने की जरूरत है, इसलिए उपकरण का उपयोग करके इसे पूर्व में परिवर्तित करना पर्याप्त नहीं होगा।)

आदर्श रूप से जावा का उपयोग कर, लेकिन पर्ल या PHP भी ठीक हो जाएगा।

जाहिर है मैं मूल रूप से जावा के साथ अपाचे एफओपी और बाटिक पर विचार कर रहा हूं। हालांकि कोई बात नहीं है कि मैं कितनी देर तक खोज करता हूं मैं इसे कैसे करना है, इसका सरल परिचय नहीं मिल सकता। SVGConverter जैसी चीजें में "क्लास के लिए इंटरफ़ेस परिभाषित करता है, जो कि भाग या सभी ग्राफ़िक कन्टेक्सटेक्ट को परिवर्तित करने में सक्षम हैं", लेकिन मैं वास्तव में इसका क्या मतलब नहीं जानता।

मुझे यह महसूस हो रहा है कि एफओपी या बाटिक द्वारा प्रदान किए जाने के लिए एपीआई होना बहुत आसान है, लेकिन मैं इस समय इसे खोजने में सक्षम नहीं हूं (या शायद यह वास्तव में मौजूद नहीं है।)

मुझे जरूरत वाले समर्थित एसवीजी सुविधाओं के संदर्भ में, फ़ाइल में कुछ पथ हैं, जो कुछ रैखिक ग्रेडियेंट से भरे हुए हैं।

आदर्श रूप में यदि मैं एसवीजी को एक DOM दस्तावेज़ के रूप में पारित कर सकता हूं जो आदर्श होगा; तो मैं अपनी टेम्पलेट एसवीजी फ़ाइल को लोड करूँगा, इसे उपयोगकर्ता द्वारा निर्दिष्ट के रूप में बदलूंगा, और फिर पीडीएफ जेनरेट करेगा।

Solutions Collecting From Web of "पीडीएफ में एसवीजी कन्वर्ट करें"

Batik rasterizer एपीआई का उपयोग कैसे किया जाता है यह दिखाने के लिए एड्रियन के लिए धन्यवाद हालांकि, मुझे अधिक हल्के समाधान की आवश्यकता है — मैं अस्थायी फ़ाइलों को नहीं लिख सकता, और मैं कम निर्भरता चाहता हूं। इसलिए, उन तरीकों से शुरूआत करते हुए, जिनके बारे में उन्होंने बताया, मुझे रूपांतरण करने के लिए निचले-स्तर कोड तक पहुंचने का कोई रास्ता मिल गया और कुछ नहीं।

import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import org.apache.batik.transcoder.Transcoder; import org.apache.batik.transcoder.TranscoderException; import org.apache.batik.transcoder.TranscoderInput; import org.apache.batik.transcoder.TranscoderOutput; import org.apache.fop.svg.PDFTranscoder; public class Test { public static void main(String[] argv) throws TranscoderException, FileNotFoundException { Transcoder transcoder = new PDFTranscoder(); TranscoderInput transcoderInput = new TranscoderInput(new FileInputStream(new File("/tmp/test.svg"))); TranscoderOutput transcoderOutput = new TranscoderOutput(new FileOutputStream(new File("/tmp/test.pdf"))); transcoder.transcode(transcoderInput, transcoderOutput); } } 

कंपाइल और रन कमांड हैं

 javac -cp batik-rasterizer.jar -d build Test.java java -cp build:batik-rasterizer.jar Test 

महत्वपूर्ण बिंदु यह है कि TranscoderInput और TranscoderOutput किसी भी InputStream और OutputStream साथ काम कर सकते हैं, न केवल फ़ाइल स्ट्रीम करें। ध्यान दें कि org.w3c.dom.Document एक org.w3c.dom.Document लेता है, जिसका मतलब है कि आपको एक एसवीजी डॉम को एसवीजी स्ट्रिंग में क्रमबद्ध करने की ज़रूरत नहीं है, अतिरिक्त कदम सहेजना।

यह संस्करण उच्च स्तरीय एपीआई के विपरीत स्टेडआउट / स्टेडरर के लिए कुछ भी नहीं लिखता है।

जेपीईजी, पीएनजी, या टीआईएफएफ आउटपुट के लिए PNGTranscoder , PNGTranscoder , या TIFFTranscoder (ध्यान दें कि ये रेखापुंज स्वरूप एक अलग पैकेज में हैं)।

(मुझे पूरा यकीन नहीं है कि जावा को org.apache.batk.transcoder.* और org.apache.fop.svg.PDFTranscoder वर्ग मिलते हैं, क्योंकि मैं उन्हें batik-rasterizer.jar में नहीं देखता हूं।)

संपादित करें:

यद्यपि सरल कमांडलाइन-संकलन batik-rasterizer.jar साथ काम करता है, लेकिन यह सभी आवश्यक वर्गों को खोजने के लिए कुछ प्रकार की क्लासलोडर जादू कर रहा है। एक अधिक यथार्थवादी मामले (चींटी के साथ एक परियोजना का निर्माण) में, आपको हाथों से कक्षाओं को ढूंढना होगा। उन्हें बाटिक प्रोजेक्ट के बाटिक fop-1.1.zip और fop-1.1.zip परियोजना से batik-1.7.zip में पाया जा सकता है। बाटिक से, आपको batik-transcoder.jar साथ संकलन करने की आवश्यकता है

  • batik-transcoder.jar
  • batik-anim.jar
  • batik-awt-util.jar
  • batik-bridge.jar
  • batik-css.jar
  • batik-dom.jar
  • batik-ext.jar
  • batik-gvt.jar
  • batik-parser.jar
  • batik-script.jar
  • batik-svg-dom.jar
  • batik-util.jar
  • batik-xml.jar
  • xml-apis-ext.jar

fop.jar से, आपको fop.jar से संकलित करना fop.jar और इसके साथ चलाना होगा

  • fop.jar
  • avalon-framework-4.2.0.jar
  • xmlgraphics-commons-1.5.jar

आखिरकार मैं इसे ठीक करने के लिए कोड की उपयुक्त लाइनों को ढूंढने में कामयाब रहा, जो कि बाटिक का उपयोग करके

आपको एसवीजी फ़ाइल और परिणामी पीडीएफ डिस्क पर फाइल के रूप में रखने की आवश्यकता है, अर्थात मुझे इसे स्मृति में करने का कोई तरीका नहीं मिल सका (मैं एक HTTP सर्लेट लिख रहा हूं, इसलिए मुझे फाइल के रूप में कुछ लिखने की कोई आंतरिक आवश्यकता नहीं है , आदर्श मैं HTTP क्लाइंट के परिणाम को स्ट्रीम करेगा)। मैंने एक फ़ाइल बनाने के लिए फ़ाइल बनाने के लिए File.createTemporaryFile का उपयोग किया था, और मेरे एसवीजी को एक फ़ाइल में डंप करने के लिए, और परिणामस्वरूप पीडीएफ के लिए लिखा जाना

इसलिए मैंने उपयोग की गई पंक्तियां निम्न हैं:

 import org.apache.batik.apps.rasterizer.DestinationType; import org.apache.batik.apps.rasterizer.SVGConverter; import ... // SVG available as a DOM object (created programatically by my program) Document svgXmlDoc = ... // Save this SVG into a file (required by SVG -> PDF transformation process) File svgFile = File.createTempFile("graphic-", ".svg"); Transformer transformer = TransformerFactory.newInstance().newTransformer(); DOMSource source2 = new DOMSource(svgXmlDoc); FileOutputStream fOut = new FileOutputStream(svgFile); try { transformer.transform(source2, new StreamResult(fOut)); } finally { fOut.close(); } // Convert the SVG into PDF File outputFile = File.createTempFile("result-", ".pdf"); SVGConverter converter = new SVGConverter(); converter.setDestinationType(DestinationType.PDF); converter.setSources(new String[] { svgFile.toString() }); converter.setDst(outputFile); converter.execute(); 

और मेरे पास निम्न जार हैं (Google की खोज परियोजनाओं को ढूंढने और उन्हें डाउनलोड करने के लिए):

  • Avalon-ढांचा-4.2.0.jar
  • बाटिक सभी-1.7.jar
  • कॉमन्स-कब-1.3.1.jar
  • कॉमन्स-प्रवेश-1.0.4.jar
  • fop-0.95.jar
  • log4j-1.2.15.jar
  • एक्सएमएल-API- ext.jar
  • xmlgraphics-कॉमन्स-1.3.1.jar

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

मैं Altsoft Xml2PDF का उपयोग करता हूँ अगर मैं आपकी सभी जरूरतों और आवश्यकताओं को ठीक से समझता हूं, तो आप अपने एक्सएमएल 2 पीडीएफ के सर्वर संस्करण को बेहतर तरीके से देखेंगे।

आप सभी की जरूरत है phantomjs है। इसके लिए आपको बाटिक की जरूरत नहीं है; सिर्फ एक बिंदु पर जाएं जहां आप फाटकॉम्स चला सकते हैं, रैस्टरिज़। जेएस को कॉल कर सकते हैं, पीडीएफ के स्रोत के रूप में यूआरएल का इस्तेमाल कर सकते हैं, और आउटपुट के रूप में एक स्थान। आप। पीडीएफ के साथ क्या करना चाहते हैं इसके आधार पर, आपको जावा की भी आवश्यकता नहीं है

http://phantomjs.org/screen-capture.html

"बाहरी पीएनजी प्रारूप के साथ शुरू होने वाले हिस्से को देखें, फेंटमोज जेपीईजी, जीआईएफ, और पीडीएफ का समर्थन करता है।"