मैं अपना खुद का ग्रिड बनाने की कोशिश कर रहा हूं (यह इस तरह दिखता है: http://tinyurl.com/cdyre6k - ईसीजी पेपर जो मीट्रिक इकाइयों में है मिलीमीटर)।रिपोर्टथैब का उपयोग करके पाइथन/पीडीएफ निर्माण - पैटर्न के साथ स्वयं निर्मित ग्रिड प्रिंट्स लेकिन स्क्रीन पर ठीक दिखता है
मैं इन रिपोर्टों को बनाने के लिए ReportLab/Python (opensource) का उपयोग कर रहा हूं। नीचे मेरे कोड का एक स्निपेट है।
स्क्रीन पर, यह महान लग रहा है !:
हालांकि, जब मैं इस भेजने के एक प्रिंटर से (और हाँ, मैं भी प्रिंटर सेटिंग्स के साथ tinkered है) यह कुछ लाइनों प्रिंट, और दूसरों को नहीं (कभी-कभी यह एक विधिवत है और एक पैटर्न-एस्क्यू प्लेड प्रिंट करता है, दूसरी बार यह मोटा/पतली रेखा होती है; ध्यान रखें, प्रिंटर पर आउटपुट स्ट्रोकविड्थ्स सेट के आधार पर सुसंगत है)।
मैं strokewidth संयोजन के सभी प्रकार की कोशिश की है, और संयोजन की स्थापना प्रिंटर के सभी प्रकार के ... मैं इसे सही ढंग से मुद्रित करने के लिए नहीं मिल सकता है! मैंने एक वैकल्पिक प्रिंटर की कोशिश की है और बहुत अच्छे परिणाम प्राप्त किए हैं, लेकिन मुझे प्रिंटर सेटिंग्स को 1200 डीपीआई (सीएडी स्तर प्रिंटिंग) से अधिक सेट करना होगा। अन्य प्रिंटर 600 डीपीआई पर सेट है। उसी समान प्रिंटर (600 डीपीआई) पर मैं एक पूर्व सहकर्मी द्वारा किए गए दस्तावेज़ को मुद्रित करता हूं और यह प्रिंट ठीक है (कृपया ध्यान दें, वह ReportLab का उपयोग नहीं कर रहा था इसलिए मैं उसका कोड/समाधान का उपयोग नहीं कर सकता)।
क्या चल रहा है? क्या यह प्रिंटर पर एक एलियासिंग मुद्दा है? अगर मैं अपनी ग्रिड को बिटमैप्स (या कुछ अन्य प्रारूप) में घुमाता हूं तो क्या यह मेरी मदद करेगा? मैं इसे कैसे ठीक कर सकता हूं (मेरे केवल विकल्प पायथन और रिपोर्टलैब का उपयोग करना है)? ReportLab मैन्युअल ने मदद नहीं की, "Google" ने मदद नहीं की, और पिछले StackExchange प्रश्न इस विशिष्ट विषय को कवर नहीं करते थे। यदि मैं स्ट्रोकविड्थ को "1" पर सेट करता हूं, तो मैं सभी लाइनों को मुद्रित करने के लिए ग्रिड प्राप्त कर सकता हूं, लेकिन फिर मामूली ग्रिड लाइनें बहुत मोटी होती हैं।
अंतिम परिणाम एक लाइन चार्ट के लिए है जिस पर मैं काम कर रहा हूं, और मुझे पता है कि रिपोर्टलैब में चार्ट फ़ंक्शन हैं, लेकिन रिपोर्ट्सबैब चार्ट/ग्रिड फ़ंक्शन मुझे मेरी परियोजना के लिए जो कुछ चाहिए, वह मुझे नहीं देते हैं, इसलिए मैं प्रमुख/मामूली लाइनों के साथ अपना खुद का ग्रिड बनाने के लिए मजबूर होना पड़ा (शायद मुझे कुछ याद आया और वैकल्पिक तकनीकों के लिए खुला, लेकिन वर्तमान में यह प्रिंटर पर नहीं, बल्कि पीडीएफ फॉर्म में ठीक दिखता है)।
किसी भी सलाह की सराहना की जाती है!
TIA,
-J
for i in decimal_range(0, _time, 1):
if (i % 5.0 == 0):
if (i % 25.0 == 0):
grid_pattern.add(shapes.Line(_temp_x,
(_temp_y + _height_of_box),
_temp_x,
(_temp_y + _height_of_box+4),
strokeWidth=1,
strokeColor=colors.black))
else:
pass
grid_pattern.add(shapes.Line(_temp_x, _temp_y, _temp_x,
(_temp_y + _height_of_box),
strokeWidth=.12,
strokeColor=colors.pink))
else:
grid_pattern.add(shapes.Line(_temp_x, _temp_y, _temp_x,
(_temp_y + _height_of_box),
strokeWidth=.12,
strokeColor=colors.pink))
_temp_x += 1 * mm
_temp_x = xorigin
for i in range(0, _mv, 1):
if (i % 5.0 == 0):
grid_pattern.add(shapes.Line(_temp_x, _temp_y,
_temp_x + _width_of_box,
_temp_y, strokeWidth=.12,
strokeColor=colors.pink))
else:
grid_pattern.add(shapes.Line(_temp_x, _temp_y,
_temp_x + _width_of_box,
_temp_y, strokeWidth=.12,
strokeColor=colors.pink))
_temp_y += 1 * mm
Update1
मैं स्ट्रोक की चौड़ाई की स्थापना की कोशिश की है करने के लिए "0" के रूप में कई पोस्टर (और ReportLab समुदाय/मेलिंग सूची की सिफारिश) निम्नानुसार है:
grid_pattern.add(shapes.Line(_temp_x, _temp_y, _temp_x,
(_temp_y + _height_of_box),
strokeWidth=0,
strokeColor=colors.pink))
यह एक सिंगल पिक्सेल-चौड़ा लाइन बनाता है, जो फिर से, पीसी पर बहुत अच्छा लग रहा है, लेकिन अभी भी पीडीएफ में एक भयानक पैटर्न के साथ प्रिंट करता है।
UPDATE2 + समाधान
नखरे और ReportLab और अपने कंप्यूटर के साथ बहस की बहुत सारी करने के बाद यह पता चला है कि यह मेरे पीसी या ReportLab नहीं था।यह प्रिंटर था (मैं दो पूरी तरह से अलग प्रिंटर कैनन और एचपी - मॉडल के बावजूद था) - मुझे लगा कि मेरे पास प्रिंटर को रद्द करने के लिए पर्याप्त कवरेज था, लेकिन इस समस्या के लिए और भी कुछ है! पढ़ना जारी रखें ...
रिपोर्टलैब वास्तव में रेखा को आकर्षित नहीं करता है, यह सिर्फ एक पोस्टस्क्रिप्ट लाइन जोड़ता है जो रेखा को आकर्षित करने के लिए प्रस्तुत करता है।
मेरे प्रारंभिक डिबगिंग का हिस्सा उन रंगों को बदलने में शामिल था जो मैं देख रहा था कि यह एक मुद्दा था - ठीक है - मैंने रंगों को गुलाबी से लाल रंग में बदल दिया है (कोई बदलाव नहीं, मुझे पता है, लेकिन फिर से, मैं माना मैंने इसे एक मुद्दे के रूप में रंगों को रद्द करने के लिए पर्याप्त रूप से बदल दिया)।
अच्छी तरह से मैंने जो हाल ही में किया है, और दर्द से सीखा है, यह है कि प्रिंटर एक सूत्र का उपयोग करके ग्रेस्केल में रंगों को परिवर्तित करते हैं और उस सूत्र में एंटीअलाइजिंग साइड इफेक्ट्स (जैसे मैं देख रहा था) उत्पन्न करने की प्रवृत्ति है।
समाधान: ग्रिड के रंगों को बदलने के लिए था। कुछ रंग दूसरों की तुलना में बेहतर प्रदर्शन करते हैं। इसलिए, इसका परीक्षण करने के लिए, मैंने एक साधारण स्क्रिप्ट लिखी है जिसे आप download here कर सकते हैं जो रिपोर्टब्लैब्स रंग शब्दकोश में संग्रहीत सभी रंगों का उपयोग करके एक पीडीएफ दस्तावेज उत्पन्न करेगा - एक नमूना ग्रिड मुद्रित करें जो मुझे समस्याएं पैदा कर रहा था और आरजीबी मूल्य प्रदान करता था। जैसा कि यह निकलता है, रंगों के सभी प्रकार कई प्रिंटरों (सभी अलग-अलग) में अच्छी तरह से प्रिंट नहीं होते हैं - यह केवल लाल/पिंक नहीं है ... कुछ "लाल-जैसे" रंग ठीक प्रिंट करते हैं, कुछ प्रिंटर ग्रेस्केल रूपांतरण को दूसरे से बेहतर तरीके से संभालते हैं ।
तो अब हमारा काम इस पीडीएफ दस्तावेज का उपयोग करना है जिसे मैंने रंग में ढूंढने के लिए बनाया है जो प्रिंट (दोनों रंग और ग्रेस्केल) और स्क्रीन पर ठीक दिखता है।
यदि आप डर के लिए स्क्रिप्ट डाउनलोड नहीं करना चाहते हैं तो मैं बुरा हूं - कम से कम पीडीएफ देखें और अपने स्वयं के नमूने प्रिंट करें यह देखने के लिए कि क्या आप समस्या को फिर से बना सकते हैं (मैं 600 डीपीआई पर प्रिंट कर रहा था - मानक - कुछ भी कल्पना नहीं है ... याद रखें, अगर मैंने डीपीआई/गुणवत्ता सेटिंग्स को चालू किया, तो यह ठीक मुद्रित हुआ, लेकिन मानक सेटिंग्स मुझे दुःख दे रही थीं!)।
या
सुझावों के लिए धन्यवाद, मैं अब उन्हें आजमा रहा हूं और मैं अपने निष्कर्षों के साथ रिपोर्ट करूंगा। –
मैंने 0 की स्ट्रोक चौड़ाई की कोशिश की, लेकिन इससे पैटर्न खराब हो गया = /। मैंने एकाधिक प्रिंटर पर प्रिंटिंग करने की कोशिश की है - एक ही सटीक पैटर्न (इसलिए मुझे लगता है कि यह एडोब रीडर है जिससे समस्या + मेरा कोड)। फिर भी, अगर मैं प्रिंटिंग सेटिंग्स चालू करता हूं, तो मैं मुद्रित करने के लिए ग्रिड प्राप्त कर सकता हूं (बस पहले की तरह)। लाइनों को मोटा बनाना या तो काम नहीं कर रहा है ... कुछ लाइनें दूसरों की तुलना में थोड़ा गहरा/मोटा मुद्रित होती हैं (सुनिश्चित नहीं है कि यह क्यों है)। कोई अन्य सुझाव? –
क्या आपके पास एक उदाहरण पीडीएफ साझा करने का कोई तरीका है जिसे आपने बनाया है ताकि हम इसे देख सकें? साथ ही, जब आप कहते हैं कि आपने "मोटा" मुद्रित किया है, तो क्या आप कह सकते हैं कि आपने लाइन चौड़ाई को कितना बढ़ाया है? –