2012-05-12 17 views
9

में कनवर्ट करें मैं पीडीएफ को svg में परिवर्तित करने के लिए एक टूल बना रहा हूं। इन पीडीएफ में ग्राफिकल डेटा है, जिसमें 300 डीपीआई पर बड़े बिटमैप्स और वैक्टरों का समूह भी शामिल है। here on stackoverflow के आसपास पोकिंग, मुझे pdf2svg मिला है, जो महान - एक आकर्षण की तरह काम करता है, और वेक्टर डेटा सही है। लेकिन ऐसा लगता है कि बिटमैप्स 72 डीपीआई तक डाउनस्केल हो रहे हैं। आयाम अभी भी इंच में 8x10 हैं, लेकिन आप बता सकते हैं कि जब आप ज़ूम इन करते हैं तो डीपीआई सही नहीं होता है। सॉफ्ट का अर्थ यह है कि डिफ़ॉल्ट मान 72 डीपीआई मानेंगे, लेकिन मुझे पूर्ण रिज़ॉल्यूशन बिटमैप छवियों की आवश्यकता है।300 डीपीआई बिटमैप्स के साथ पीडीएफ को svg

पीडीएफ 2 एसवीजी रूपांतरण करने के लिए पॉपप्लर और कैरो का उपयोग करता है। मैंने कोड में चारों ओर पोक किया है, और मुझे लगता है कि यह एक पॉपप्लर पेज और कैरो सतह कहां बना रहा है, और मैंने documentation में देखा है कि एक पॉपप्लर पेज में "स्केल" की अवधारणा है जो प्रासंगिक प्रतीत होती है, लेकिन मैं ' यह पता लगाने के लिए कि इसे कहां प्लग करना है। मैंने कोशिश की (प्रयोगात्मक) ऊंचाई और चौड़ाई को हार्डकोडिंग cairo_svg_surface_create में सही मानों में पारित किया, लेकिन यह एम्बेडेड बिटमैप को प्रभावित किए बिना पूरे svg बड़े पर आयाम लागू किया गया।

poppler_page_get_size (page, &width, &height); 

// Open the SVG file 
surface = cairo_svg_surface_create(svgFilename, width, height); 
drawcontext = cairo_create(surface); 

// Render the PDF file into the SVG file 
poppler_page_render(page, drawcontext); 
cairo_show_page(drawcontext); 

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

+1

महान प्रश्न के साथ बदलें

poppler_page_render(page, drawcontext); 

, मुझे आशा है कि आप एक अच्छे जवाब मिलता है। – jimw

उत्तर

0

क्या cairo_surface_set_fallback_resolution() शायद मदद करता है? (नहीं, मुझे इस बारे में भी यकीन नहीं है)

4

मैंने http://lists.freedesktop.org/archives/poppler/2011-December/008451.html में वर्णित स्रोत में परिवर्तन किया है और यह पूरी तरह से काम करता है - छवियां उनके मूल संकल्प पर प्रतीत होती हैं।

poppler_page_render_for_printing(page, drawcontext); 
संबंधित मुद्दे