fpdf2 SVG इमेज: Python PDF में पाथ सुरक्षित रखें
fpdf2 से Python PDF में SVG लोगो रखें, आकार नियंत्रित करें, सेव किए पाथ जाँचें और रास्टर विकल्प से पहले गायब टेक्स्ट या आकृतियों की वजह खोजें।
इस पेज पर
fpdf2 दस्तावेज़ में SVG रखने के लिए pdf.image("logo.svg", x=20, y=20, w=60) इस्तेमाल करें। समर्थित SVG ज्यामिति PDF आरेखन पाथ बनती है। पहले लोगो को PNG में रेंडर करना ज़रूरी नहीं। आधिकारिक SVG दस्तावेज़ यह सीधा तरीका और उसकी सीमाएँ बताते हैं।
फ़ॉर्मैट आपके लिए नया हो तो SVG फ़ाइल मार्गदर्शिका पाथ और इमेज कंटेनर समझाती है। सफल इंपोर्ट भी जाँचना चाहिए। फ़ाइल में एम्बेडेड पिक्सेल हो सकते हैं, वह ऐसी सुविधाओं पर निर्भर हो सकती है जिन्हें इंपोर्टर दोहराता नहीं, या चित्र के आसपास खाली जगह हो सकती है। यह मार्गदर्शिका छोटा मूल लोगो बनाती है, उसे स्पष्ट आकार पर रखती है और बने PDF को जाँचती है। मौजूदा मूल वेक्टर हो तो उसे रखें; PNG या JPG से चित्र पुनर्निर्मित करना पहले का अलग चरण है।
ज्ञात SVG और तय fpdf2 संस्करण से शुरू करें
हमने उदाहरण Python 3.12 और fpdf2 2.8.8 से चलाया। यह परीक्षण किया संस्करण है, हर बाद के संस्करण में समान व्यवहार का वादा नहीं। पैकेज का आधिकारिक PyPI पेज fpdf2 वितरण नाम से इंस्टॉलेशन बताता है; Python इंपोर्ट fpdf है।
नया परिवेश इस्तेमाल करें, ताकि उदाहरण दूसरे प्रोजेक्ट के पैकेज से स्वतंत्र रहे:
python3 -m venv .venv
source .venv/bin/activate
python -m pip install "fpdf2==2.8.8"Windows पर इसके बजाय .venv\Scripts\activate से परिवेश चालू करें। इस मूल आयताकार प्रतीक को logo.svg नाम से सेव करें:
<svg xmlns="http://www.w3.org/2000/svg"
width="120" height="80" viewBox="0 0 120 80">
<path fill="#137d89" fill-rule="evenodd"
d="M10 10H110V70H10Z M30 25H90V55H30Z"/>
</svg>इसमें दो बंद उपपाथ हैं। बाहरी आयत भरा है और evenodd फ़िल नियम अंदरूनी आयत को छेद बनाता है। फ़ॉन्ट, इमेज या प्रभाव शामिल नहीं हैं, इसलिए पहले परीक्षण की समस्या पहचानना आसान रहता है।
नीचे का कोड SVG के साथ place_logo.py नाम से सेव करें:
from pathlib import Path
from fpdf import FPDF
folder = Path(__file__).resolve().parent
pdf = FPDF(unit="mm")
pdf.add_page()
pdf.image(str(folder / "logo.svg"), x=20, y=20, w=60)
pdf.output(str(folder / "logo.pdf"))python place_logo.py चलाएँ। logo.pdf खोलें और ऊपर-बाएँ कोने के पास नीला-हरा आयताकार फ़्रेम देखें, जिसके बीच से पेज दिखता हो।
SVG कैनवास और रंगे हुए लोगो को अलग समझें
मूल कैनवास का अनुपात 3:2 है: 120 इकाइयाँ चौड़ा और 80 ऊँचा। w=60 पर यह उदाहरण 60 × 40 mm कैनवास घेरता है। चित्र कैनवास के अंदर 10 मूल इकाइयों से शुरू होता है, इसलिए उसका रंगा हुआ बाहरी आयत 50 × 30 mm है और पेज पर 25, 25 mm से शुरू होता है। ये गणनाएँ इस परीक्षण उदाहरण के निर्देशांक और स्केल से निकली हैं।
यह मार्जिन बताता है कि रंगी आकृति मापने और रखे गए कैनवास को मापने के परिणाम समान क्यों नहीं होते। ग्राहक का लोगो बहुत छोटा लगे तो PDF चौड़ाई बढ़ाने से पहले मूल मार्जिन जाँचें।
fpdf2 इमेज मार्गदर्शिका आयाम संभालना और तय बॉक्स के अंदर अनुपात बनाए रखने का विकल्प समझाती है। पहले उदाहरण में केवल चौड़ाई सेट करें। बाद में दोनों आयाम दें तो यह मानने के बजाय कि हर मूल का समान अनुपात होगा, इच्छित फ़िट सोच-समझकर परखें।

सेव किए PDF में पाथ होने की पुष्टि करें
PDF पूर्वावलोकन रूप दिखाता है, लेकिन मध्यम ज़ूम पर इमेज भी साफ़ लग सकती है। फ़ाइल भी जाँचें। हमने अलग परीक्षण उदाहरण pypdf 6.1.1 से जाँचा:
python -m pip install "pypdf==6.1.1"from pathlib import Path
from pypdf import PdfReader
folder = Path(__file__).resolve().parent
page = PdfReader(folder / "logo.pdf").pages[0]
print("Page images:", len(page.images))
print(page.get_contents().get_data().decode("latin-1"))हमारे आउटपुट ने पेज इमेज शून्य बताईं। डिकोड की गई सामग्री में स्थानांतरण, रेखा और पाथ बंद करने वाली क्रियाओं से बने आयताकार कंटूर थे, जिनके बाद सम-विषम फ़िल क्रिया f* थी। रेंडर हुए छेद के साथ यह निष्कर्ष समर्थित होता है कि इमेज रहित यह परीक्षण उदाहरण सेव किए PDF में आरेखन ज्यामिति रहा।
बिना जाँच के उस निष्कर्ष को दूसरे इनपुट पर लागू न करें। रिपोर्ट में दूसरी जगह फ़ोटो हो सकते हैं; SVG में खुद इमेज हो सकती है। एम्बेडेड रास्टर पहचान मार्गदर्शिका पाथ आधारित लोगो और SVG मार्कअप में लिपटे बिटमैप का अंतर समझाती है। अधिक जटिल PDF आरेखन सामग्री संदर्भित ऑब्जेक्ट के अंदर भी रख सकते हैं, इसलिए ऊपर की छोटी स्क्रिप्ट इस अलग परीक्षण उदाहरण की शुरुआत है, सार्वभौमिक PDF ऑडिट नहीं।
इंस्टॉल संस्करण में गायब चित्र की वजह खोजें
पहले ऊपर का छोटा प्रतीक चलाएँ। वह काम करे लेकिन उत्पादन लोगो विफल हो तो समस्या मूल चित्र या उसकी सुविधाओं तक सीमित हो गई है। मूल सुरक्षित रखें और प्रति में एक बार में एक सुविधा सरल करें।
| लक्षण | पहली जाँच | उपयोगी अगला कदम |
|---|---|---|
| पेज खाली है | फ़ाइल पाथ, स्थिति, आयाम और इंपोर्टर चेतावनी | सरल प्रतीक को स्पष्ट निर्देशांक पर परखें |
| लोगो बहुत छोटा दिखता है | मूल कैनवास के अंदर खाली जगह | रंगी सीमाओं को viewBox से मिलाएँ |
| बीच का हिस्सा भर जाता है | संयुक्त पाथ संरचना और फ़िल नियम | संपादन या एक्सपोर्ट में छेद सुरक्षित रखें |
| अक्षर गायब या अलग हैं | इंस्टॉल संस्करण, फ़ॉन्ट चुनाव और टेक्स्ट सुविधाएँ | अलग टेक्स्ट नमूना परखें या स्वीकृत आउटलाइन वाले लोगो अक्षर इस्तेमाल करें |
| सजावटी हिस्सा गायब है | असमर्थित SVG सुविधाएँ | प्रति से वह सुविधा हटाकर परिणाम मिलाएँ |
| PDF साफ़ है लेकिन पिक्सेल हो सकते हैं | मूल और PDF में एम्बेडेड इमेज | पूर्वावलोकन के साथ फ़ाइल संरचना भी जाँचें |
यहाँ पुराने जवाब सावधानी से लें। हमारे अलग 2.8.8 परीक्षण में सरल <text> तत्व ने निकाला जा सकने वाला HELLO टेक्स्ट दिया और साधारण रैखिक ग्रेडिएंट आयत सफलतापूर्वक एक्सपोर्ट हुआ। ये सीमित जाँच पूरी SVG टेक्स्ट, फ़ॉन्ट, CSS या ग्रेडिएंट अनुकूलता साबित नहीं करतीं। वे यह दिखाती हैं कि सभी SVG टेक्स्ट या सभी ग्रेडिएंट असमर्थित होने का पुराना दावा अनावश्यक रास्टर रूपांतरण की ओर क्यों भेज सकता है।
वर्तमान SVG सुविधा सूची में मार्कर, पैटर्न, पाथ पर टेक्स्ट और जटिल या बाहरी CSS जैसी सीमाएँ अब भी हैं। जाँच के दौरान सुनिश्चित करें कि इंपोर्टर की चेतावनियाँ दिखाई देती रहें और सेव किए पेज को मूल से मिलाएँ। केवल साफ़ लॉग हर दृश्य सुविधा सुरक्षित रहने का प्रमाण नहीं।
परिणाम माँगे तो रास्टर विकल्प अपनाएँ
अगर चुनी प्रक्रिया प्रभाव दोहरा नहीं सकती, तो तय करें कि उसका रूप सुरक्षित रखना ज्यामिति रखने से अधिक अहम है या नहीं। दस्तावेज़ के उस हिस्से के लिए रेंडर किया PNG उपयुक्त हो सकता है। अंतिम भौतिक आकार पर जाँचें और आउटपुट का सही वर्णन करें; रास्टर रेंडर एम्बेड करने से मूल पाथ सुरक्षित नहीं रहते।
ब्रांड लोगो के लिए स्वीकृत आउटलाइन वाले अक्षर या सरल वेक्टर एक्सपोर्ट बेहतर विकल्प हो सकते हैं। संपादन योग्य दस्तावेज़ टेक्स्ट के लिए फ़ॉन्ट और टेक्स्ट संभालना दस्तावेज़ प्रक्रिया में रखें। वाक्य का स्क्रीनशॉट ट्रेस करने से उसकी टाइपोग्राफ़ी वापस नहीं आती और वह चयन योग्य टेक्स्ट नहीं बनता।
मौजूदा PDF कोड दूसरी Python लाइब्रेरी इस्तेमाल करे तो ReportLab SVG प्रक्रिया की अपनी इंपोर्ट और आकार जाँच हैं। लाइब्रेरी बदलना अलग कार्यान्वयन निर्णय है, इसलिए दस्तावेज़ फिर बनाने से पहले वास्तविक समस्याग्रस्त सुविधा परखें।
PDF चरण से पहले केवल रास्टर में उपलब्ध चित्र तैयार करें
केवल PNG या JPG लोगो बचे तो PerfectVector का लोगो वेक्टराइज़र fpdf2 में इंपोर्ट करने से पहले संभावित SVG तैयार कर सकता है। कंटूर, छोटे छेद और रंग क्षेत्र मूल से मिलाएँ, फिर संभावित फ़ाइल को उसी स्थिति और PDF जाँच से गुजारें।
मूल वेक्टर उपलब्ध हो तो उसका इस्तेमाल करें। ब्रांड के हूबहू अक्षरों के लिए फिर टाइप करना या हाथ से सुधार चाहिए हो सकता है; लोगो वेक्टराइज़ेशन मार्गदर्शिका वह चुनाव समझाती है। इस लेख का प्रतीक मूल हाथ से बनाया SVG है, मापा हुआ PerfectVector रूपांतरण परिणाम नहीं। PerfectVector चित्र तैयार करता है, जबकि fpdf2 PDF में उसकी स्थिति नियंत्रित करता है।
अक्सर पूछे जाने वाले सवाल
क्या fpdf2 सीधे SVG डाल सकता है? हाँ। image विधि को SVG फ़ाइल दें और उसकी स्थिति तथा आकार सेट करें। समर्थित ज्यामिति PDF पाथ बन सकती है, लेकिन अपने चित्र के लिए एक्सपोर्ट फ़ाइल और रूप जाँचें।
क्या fpdf2 SVG टेक्स्ट का समर्थन करता है? हमारा साधारण टेक्स्ट परीक्षण fpdf2 2.8.8 में चला। इससे हर फ़ॉन्ट, लेआउट सुविधा या पाथ पर टेक्स्ट की गारंटी नहीं मिलती। इंस्टॉल संस्करण जाँचें और दस्तावेज़ के वास्तविक अक्षर परखें।
60 mm की इमेज 60 mm से संकरी क्यों दिखती है? माँगा गया आकार रखने वाले कैनवास पर लागू होता है। SVG के अंदर खाली मार्जिन उसी कैनवास में रहते हैं, इसलिए रंगी आकृति संकरी हो सकती है।
क्या PNG लोगो जोड़ने से पहले SVG में बदलना चाहिए? केवल तब जब संपादन योग्य पाथ चाहिए और चित्र ट्रेसिंग के लिए उपयुक्त हो। फ़ोटो रास्टर इमेज रखें और उपलब्ध हो तो मूल वेक्टर लोगो इस्तेमाल करें। डालने से पहले संभावित ट्रेस की गई फ़ाइल जाँचें।
स्रोत
- fpdf2 — SVG — सीधे SVG डालना, सुविधा समर्थन और चेतावनी लॉग बताता है।
- fpdf2 — इमेज — इमेज स्थिति, आयाम और आस्पेक्ट अनुपात फ़िट समझाता है।
- fpdf2 — PyPI पैकेज — इंस्टॉल योग्य वितरण और Python इंपोर्ट परंपरा बताता है।
क्या केवल रास्टर लोगो है? PerfectVector से संभावित SVG तैयार करें, उसके कंटूर और छेद जाँचें, फिर fpdf2 से ज़रूरी आकार पर रखें और सेव किया PDF जाँचें।
Blog से और

PDFKit SVG: वेक्टर लोगो को पिक्सेल बनाए बिना रखें
PDFKit दस्तावेज़ में पूरा SVG लोगो डालें, पॉइंट में आकार सेट करें और सेव PDF में पाथ, खुले हिस्से, गायब सुविधाएँ तथा एम्बेडेड इमेज जाँचें।

CairoSVG: सही आकार पर SVG को PDF और PNG एक्सपोर्ट करें
CairoSVG से SVG कलाकृति बदलें, आउटपुट चौड़ाई या पैमाना चुनें, DPI और पैरेंट आयाम समझें तथा देने से पहले PNG पिक्सेल और PDF पेज आकार जाँचें।