वर्ड में एक ही क्षैतिज तालिका पृष्ठ के लिए, पूरे आलेख का ओरिएंटेशन न बदलें।
उसी वर्ड दस्तावेज़ में, केवल तालिका पृष्ठ लैंडस्केप ओरिएंटेशन में होना चाहिए। पूरे लेख को लैंडस्केप ओरिएंटेशन में न बदलें। यह आलेख पहले सभी अनुभाग बनाता है, फिर अनुक्रमणिका द्वारा लक्ष्य अनुभाग को पुनः प्राप्त करता है, क्रमशः दिशा और पृष्ठ की चौड़ाई और ऊंचाई निर्धारित करता है, सहेजता है और फिर से पढ़ता है, और पुष्टि करता है कि अन्य अनुभागों में से कोई भी नहीं बदला गया है।
जब किसी Word दस्तावेज़ में केवल कुछ पृष्ठों को लैंडस्केप ओरिएंटेशन की आवश्यकता होती है, तो सबसे आम गलती पूरे दस्तावेज़ को सीधे लैंडस्केप ओरिएंटेशन में बदलना, या तालिका को घुमाना और फिर सामग्री को क्रॉप करना है। यह आलेख उन डेवलपर्स और दस्तावेज़ टीमों के लिए है, जिन्हें वर्ड लेआउट को स्वचालित रूप से संभालने के लिए पायथन-डॉक्स का उपयोग करने की आवश्यकता होती है। यह बताता है कि केवल लक्ष्य अनुभाग के पेज ओरिएंटेशन को कैसे बदला जाए।
समझने की कुंजी पृष्ठ विराम और अनुभाग विराम के बीच अंतर करना है। पेज ब्रेक केवल लाइन ब्रेक को नियंत्रित करते हैं और पेज ओरिएंटेशन, पेपर आकार और मार्जिन नहीं रखते हैं; ये लेआउट गुण "अनुभाग" से बंधे हैं। इस आलेख को पढ़ने के बाद, आपको पहले सभी अनुभाग बनाने में सक्षम होना चाहिए, फिर सूचकांक द्वारा लक्ष्य अनुभाग निकालें, क्रमशः दिशा, चौड़ाई और ऊंचाई निर्धारित करें, और यह पुष्टि करने के लिए सहेजने के बाद दोबारा पढ़ें कि अन्य अनुभाग नहीं बदले गए हैं। अनुभाग-संबंधित एपीआई विवरण के लिए, कृपया पायथन-docx अनुभाग आधिकारिक दस्तावेज़ीकरण देखें।
एक वाक्य में निष्कर्ष: शब्द केवल तालिका पृष्ठों को क्षैतिज बनाता है। इसे कैसे सेट करें?
केवल सामग्री के लिए एक अलग अनुभाग बनाएं जिसे क्षैतिज होना चाहिए, चौड़ाई और ऊंचाई को बदलें और इस अनुभाग पर दिशा निर्धारित करें, और अन्य अनुभागों को लंबवत रखें।
| आपकी स्थिति | अनुशंसित प्रथाएँ | कारण |
|---|---|---|
| लक्ष्य पृष्ठ से पहले और बाद में कोई अनुभाग विराम नहीं है | विभाजित करने के लिए पहले add_section() का उपयोग करें, फिर दिशा निर्धारित करें | लेआउट विशेषताएँ अनुभागों में संग्रहीत की जाती हैं। आप अनुभागों को विभाजित किए बिना केवल लक्ष्य पृष्ठ नहीं बदल सकते। |
| केवल लैंडस्केप सेट किया गया है लेकिन चौड़ाई और ऊंचाई की अदला-बदली नहीं की गई है | page_width और page_height को एक साथ स्वैप करें | केवल ओरिएंटेशन बदलने से कागज का आकार गलत हो जाएगा और पीडीएफ निर्यात करते समय सामग्री में कटौती हो सकती है। |
| लैंडस्केप ओरिएंटेशन सेट करने के बाद भी तालिका को छोटा किया गया है | अनुभाग के बाएँ और दाएँ हाशिये की जाँच करें, या तालिका की चौड़ाई कम करें | कोड आपके लिए फॉर्म और कागज़ के बीच मेल खाने वाला संबंध निर्धारित नहीं कर सकता है। |
| दस्तावेज़ में लगातार खंड विराम हैं और अभिविन्यास असामान्य है। | अगले पृष्ठ अनुभाग विराम में बदलें और मैन्युअल रूप से अनुभाग प्रकार की पुष्टि करें | पेज ब्रेक के बिना लगातार सेक्शन ब्रेक आसानी से दृश्य अव्यवस्था पैदा कर सकता है। |
सेक्शन ब्रेक लेआउट विशेषताओं के वास्तविक वाहक हैं
OpenXML मानक में, <w:sectPr> तत्व पृष्ठ लेआउट को परिभाषित करता है। एक दस्तावेज़ में कई अनुभाग हो सकते हैं, प्रत्येक की अपनी चौड़ाई, ऊंचाई, अभिविन्यास और मार्जिन होते हैं। जब document.add_section() को कॉल किया जाता है, तो Python-docx वर्तमान दस्तावेज़ के अंत में एक नया <w:sectPr> बनाएगा, और उसके बाद जोड़ी गई सामग्री इस नए अनुभाग से संबंधित होगी।
यदि आप पैराग्राफ शैलियों या तालिका गुणों को संशोधित करके अभिविन्यास बदलने का प्रयास करते हैं, तो यह आमतौर पर काम नहीं करता है क्योंकि इन ऑब्जेक्ट्स में लेआउट जानकारी संग्रहीत करने के लिए कोई फ़ील्ड नहीं है।
ऑपरेशन लॉजिक: पहले खंडों में विभाजित करें, फिर खंड लें, और अंत में सेट करें
- सामग्री श्रेणी को क्षैतिज रखें।
- सुनिश्चित करें कि यह सामग्री एक अलग अनुभाग में लपेटी गई है और यदि आवश्यक हो तो
add_section()का उपयोग करके विभाजित की गई है। - पहले सभी अनुभाग बनाएं, और फिर अनुभाग को मूल अनुभाग के रूप में जोड़ने से पहले सहेजे गए स्टब ऑब्जेक्ट को समझने से बचने के लिए सूचकांक के अनुसार लक्ष्य अनुभाग प्राप्त करें।
- इस अनुभाग के लिए
page_widthऔरpage_heightको स्वैप करें, औरorientationकोWD_ORIENT.LANDSCAPEपर सेट करें। - सेव करने के बाद फाइल को दोबारा पढ़ें और जांचें कि क्या अन्य सेक्शन की दिशा, चौड़ाई और ऊंचाई अपरिवर्तित रहती है।
ध्यान दें कि चौड़ाई और ऊंचाई की अदला-बदली के बिना केवल orientation सेट करने से, Word खुलने पर गलत पेपर आकार प्रदर्शित करेगा। इस लेख में इस बिंदु पर बार-बार जोर दिया गया है।
स्व-निहित रचना उदाहरण
निम्नलिखित कोड मेमोरी में इनपुट बनाता है। सभी डेटा सिंथेटिक नमूने हैं। चल रहे रिकॉर्ड का उपयोग केवल एपीआई कॉल तर्क को चित्रित करने के लिए किया जाता है और सभी वास्तविक फ़ाइलों या उत्पाद प्रभावों की गारंटी का प्रतिनिधित्व नहीं करता है। आश्रित पुस्तकालय python-docx है। कृपया इसे लॉक किए गए प्रोजेक्ट वातावरण में चलाएं। संस्करण को WD_ORIENT गणना (0.8.11 और ऊपर) का समर्थन करना चाहिए।
from docx import Document
from docx.enum.section import WD_ORIENT, WD_SECTION
from io import BytesIO
doc = Document()
doc.add_paragraph("Portrait intro")
doc.add_section(WD_SECTION.NEW_PAGE)
doc.add_paragraph("Landscape middle")
doc.add_section(WD_SECTION.NEW_PAGE)
doc.add_paragraph("Portrait end")
middle = doc.sections[1]
width, height = middle.page_width, middle.page_height
middle.orientation = WD_ORIENT.LANDSCAPE
middle.page_width, middle.page_height = max(width, height), min(width, height)
out = BytesIO()
doc.save(out)
out.seek(0)
restored = Document(out)
assert len(restored.sections) == 3
assert restored.sections[1].orientation == WD_ORIENT.LANDSCAPE
assert restored.sections[1].page_width > restored.sections[1].page_height
assert restored.sections[0].orientation == WD_ORIENT.PORTRAIT
assert restored.sections[2].orientation == WD_ORIENT.PORTRAIT
सही इनपुट परिदृश्य: दस्तावेज़ में तीन खंड हैं, पहला खंड ऊर्ध्वाधर पाठ है, दूसरा खंड विस्तृत तालिकाओं के साथ रखा गया है, और तीसरा खंड लंबवत पर लौटता है। अपेक्षित परिणाम यह है कि orientation दूसरे खंड में लैंडस्केप है, और page_width page_height से बड़ा है, और शेष दो खंड पोर्ट्रेट बने हुए हैं।
सीमा इनपुट एक: केवल एक खंड वाला दस्तावेज़। क्षैतिज दिशा को सीधे sections[0] पर सेट करने से संपूर्ण दस्तावेज़ क्षैतिज हो जाएगा। सामग्री को विभाजित करने के लिए आपको पहले add_section() को कॉल करना चाहिए, और फिर नए जेनरेट किए गए अनुभागों को संचालित करना चाहिए।
सीमा इनपुट दो: लैंडस्केप सेट है लेकिन मूल ऊर्ध्वाधर आकार बरकरार रखा गया है। कोड को page_width >= page_height को एक विधेय के रूप में सत्यापित करना चाहिए।
📊 कोर तुलना: पेज ब्रेक और सेक्शन ब्रेक
| रास्ता | क्या पृष्ठ दिशा को आगे बढ़ाया जा सकता है? | विशिष्ट उपयोग | ध्यान देने योग्य बातें |
|---|---|---|---|
| पृष्ठ ब्रेक | नही सकता | केवल सामग्री रैपिंग को नियंत्रित करें | केवल एक पेज का लैंडस्केप बनाने के लिए इसका उपयोग नहीं किया जा सकता |
| अगला पृष्ठ अनुभाग विराम | योग्य | आंशिक परिदृश्य, मार्जिन बदलना | आपको अनुभाग की चौड़ाई, ऊंचाई और दिशा अलग-अलग निर्धारित करनी होगी। |
| निरंतर खंड विच्छेद | योग्य | एक ही पृष्ठ में लेआउट बदलें | पृष्ठों को बदलने में विफलता से दृश्य भ्रम हो सकता है और मैन्युअल निर्णय की आवश्यकता होती है। |
🎯कौन सा तरीका आपके लिए उपयुक्त है?
अगर आप……
- लक्ष्य पृष्ठ से पहले और बाद में कोई अनुभाग विराम नहीं है: पहले अनुभागों को विभाजित करें, और फिर लक्ष्य अनुभाग की दिशा निर्धारित करें।
- दस्तावेज़ में केवल एक अनुभाग है और केवल आंशिक रूप से क्षैतिज होना चाहिए: पहले
add_section()को कॉल करें, सीधेsections[0]को संशोधित न करें। - लैंडस्केप ओरिएंटेशन के बाद तालिका को छोटा कर दिया गया: अनुभाग के बाएँ और दाएँ मार्जिन की जाँच करें, या तालिका की चौड़ाई कम करें।
- दस्तावेज़ में लगातार अनुभाग विराम शामिल हैं: मूल्यांकन करें कि क्या इसे अगले पृष्ठ अनुभाग विराम में बदला जाना चाहिए और मैन्युअल रूप से पुष्टि करें।
- फ़ाइल एन्क्रिप्शन, XML संरचना क्षति, या मैक्रोज़ द्वारा गतिशील रूप से उत्पन्न अनुभाग: पहले प्रारूप को मैन्युअल रूप से सुधारें या परिवर्तित करें, इस आलेख में कोड लागू नहीं है।
❓ अक्सर पूछे जाने वाले प्रश्न (एफएक्यू)
1. अनुच्छेद या तालिका विशेषताएँ सेट करने के बाद पृष्ठ की दिशा क्यों नहीं बदलती?
पैराग्राफ और टेबल ऑब्जेक्ट में लेआउट जानकारी संग्रहीत करने के लिए फ़ील्ड नहीं हैं। पृष्ठ दिशा अनुभाग विशेषता से संबंधित है, इसलिए इसे अनुभाग विराम के अनुरूप अनुभाग के माध्यम से सेट करने की आवश्यकता है।
2. क्या सिर्फ लैंडस्केप की ओर ओरिएंटेशन सेट करना ही काफी है?
पर्याप्त नहीं। आपको page_width और page_height का आदान-प्रदान भी करना होगा, अन्यथा वर्ड खोलने पर कागज का आकार गलत तरीके से प्रदर्शित होगा, और पीडीएफ निर्यात करते समय सामग्री में कटौती हो सकती है।
3. आप अनुभागों की क्षैतिज दिशा सीधे सेट क्यों नहीं कर सकते[0]?
यदि दस्तावेज़ में केवल एक अनुभाग है, तो इसे संशोधित करने से संपूर्ण दस्तावेज़ प्रभावित होगा। आंशिक ट्रांसवर्सल को पहले add_section() का उपयोग करके स्वतंत्र खंडों में विभाजित करने की आवश्यकता है।
4. यदि शीर्ष लेख और पाद लेख क्षैतिज रूप से गलत संरेखित हैं तो मुझे क्या करना चाहिए?
अनुभाग विशेषताओं में परिवर्तन हेडर लिंक स्थिति को प्रभावित नहीं करते हैं। आपको शीर्ष लेख और पाद लेख के बीच की दूरी सेटिंग्स को अलग से जांचना होगा। यह एक स्वतंत्र मुद्दा है.
📝सारांश
तालिका पृष्ठ को केवल क्षैतिज बनाने की कुंजी लक्ष्य सामग्री को एक अलग अनुभाग में रखना और एक ही समय में चौड़ाई, ऊंचाई और अभिविन्यास को स्वैप करना है। सेव करने के बाद अन्य सेक्शन को दोबारा पढ़ें और जांचें। कोड सत्यापन के बाद, आपको वर्ड या पीडीएफ में निर्यात करने के बाद नग्न आंखों से प्रभाव की पुष्टि करनी होगी।


