<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>PPTX रिवर्स इंजीनियरिंग on File Format Blog</title>
    <link>https://blog.fileformat.com/hi/tag/pptx-%E0%A4%B0%E0%A4%BF%E0%A4%B5%E0%A4%B0%E0%A5%8D%E0%A4%B8-%E0%A4%87%E0%A4%82%E0%A4%9C%E0%A5%80%E0%A4%A8%E0%A4%BF%E0%A4%AF%E0%A4%B0%E0%A4%BF%E0%A4%82%E0%A4%97/</link>
    <description>Recent content in PPTX रिवर्स इंजीनियरिंग on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>hi</language>
    <lastBuildDate>Wed, 16 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/hi/tag/pptx-%E0%A4%B0%E0%A4%BF%E0%A4%B5%E0%A4%B0%E0%A5%8D%E0%A4%B8-%E0%A4%87%E0%A4%82%E0%A4%9C%E0%A5%80%E0%A4%A8%E0%A4%BF%E0%A4%AF%E0%A4%B0%E0%A4%BF%E0%A4%82%E0%A4%97/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>PPTX रिवर्स इंजीनियरिंग: पावरपॉइंट फ़ाइलों को आंतरिक रूप से समझना</title>
      <link>https://blog.fileformat.com/hi/presentation/pptx-reverse-engineering-understanding-powerpoint-files-internally/</link>
      <pubDate>Wed, 16 Sep 2026 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/hi/presentation/pptx-reverse-engineering-understanding-powerpoint-files-internally/</guid>
      <description>जानेँ कि एक `.pptx` फ़ाइल के अंदर वास्तव में क्या रहता है। सीखें कि OpenXML पैकेजिंग, रिलेशनशिप ग्राफ़, शैप्स, और ड्रॉइंग मार्कअप कैसे काम करते हैं।</description>
      <content:encoded><![CDATA[<p><strong>अंतिम अपडेट</strong>: 16 Sept, 2026</p>
<figure class="align-center ">
    <img loading="lazy" src="images/pptx-reverse-engineering-understanding-powerpoint-files-internally.png#center"
         alt="PPTX Reverse Engineering: Understanding PowerPoint Files Internally"/> 
</figure>

<hr>
<h2 id="रवरस-इजनयरग-pptx4-फइल-एक-डवलपर-गइड">रिवर्स इंजीनियरिंग <a href="https://docs.fileformat.com/presentation/pptx/">PPTX</a> फ़ाइलें: एक डेवलपर गाइड</h2>
<p>आधुनिक प्रस्तुति डेक्स निवेशक पिच से लेकर आंतरिक त्रैमासिक मीट्रिक्स तक सब कुछ शक्ति प्रदान करते हैं। लेकिन यदि आपको कभी प्रोग्रामेटिक रूप से टेक्स्ट निकालना, रनटाइम पर टेम्पलेट बदलना, स्वचालित स्लाइड जेनरेटर बनाना, या गोपनीय प्रस्तुतियों को साफ़ करना पड़ा हो, तो आपने शायद जल्दी ही समझ लिया होगा: मानक उच्च-स्तरीय प्रस्तुति लाइब्रेरीज़ एक अप्रत्याशित ब्लैक बॉक्स की तरह महसूस हो सकती हैं।</p>
<p>जब लाइब्रेरीज़ जैसे <a href="https://products.fileformat.com/presentation/python/python-pptx/"><code>python-pptx</code></a>, <a href="https://products.fileformat.com/presentation/java/apache-poi-xslf/">Apache POI</a>, या <a href="https://products.fileformat.com/presentation/net/openxmlsdk/">OpenXML SDK</a> अपनी सीमाओं तक पहुँचती हैं—या अनडॉक्यूमेंटेड लेआउट बग्स पेश करती हैं—तो बाहर निकलने का एकमात्र तरीका है अंदर जाना। आपको समझना होगा कि एक PowerPoint प्रस्तुति वास्तव में बाइट और स्कीमा स्तर पर क्या होती है।</p>
<p>इस गहन विश्लेषण में, हम <code>.pptx</code> फ़ॉर्मेट की पर्दा हटाएंगे, इसकी आंतरिक संरचना को अनपैक करेंगे, उसके संबंध ग्राफ़ को ट्रेस करेंगे, उसकी ड्राइंग पदानुक्रमों का विश्लेषण करेंगे, और रिवर्स इंजीनियरिंग, निरीक्षण, तथा कच्चे कोड के साथ प्रस्तुतियों को संशोधित करने के व्यावहारिक रणनीतियों को देखेंगे।</p>
<h2 id="1-एक-pptx-फइल-वसतव-म-कय-ह">1. एक <code>.pptx</code> फ़ाइल वास्तव में क्या है?</h2>
<p>अपने मूल में, एक <code>.pptx</code> फ़ाइल प्राचीन 1990 के दशक के <code>.ppt</code> फ़ॉर्मेट की तरह स्वामित्व वाली एकसमान बाइनरी नहीं है। जब से माइक्रोसॉफ्ट ने Office Open XML (ECMA-376 और ISO/IEC 29500) पेश किया है, आधुनिक Office दस्तावेज़ <strong>Open Packaging Conventions (OPC) आर्काइव</strong> होते हैं।</p>
<p>सरल शब्दों में: <strong>एक <code>.pptx</code> फ़ाइल केवल एक ज़िप आर्काइव है जिसमें XML दस्तावेज़ और मीडिया एसेट्स होते हैं, जो एक निर्धारित निर्देशिका वृक्ष में व्यवस्थित होते हैं।</strong></p>
<p>आप इसे सेकंडों में मानक टर्मिनल टूलिंग का उपयोग करके सिद्ध कर सकते हैं:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># Rename the extension and unpack it</span>
</span></span><span style="display:flex;"><span>cp presentation.pptx presentation.zip
</span></span><span style="display:flex;"><span>unzip presentation.zip -d presentation_unpacked/
</span></span><span style="display:flex;"><span>cd presentation_unpacked/
</span></span><span style="display:flex;"><span>tree -L <span style="color:#ae81ff">2</span>
</span></span></code></pre></div><p>परिणामी निर्देशिका वृक्ष अत्यंत सुसंगत दिखता है:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>.
</span></span><span style="display:flex;"><span>├── [Content_Types].xml
</span></span><span style="display:flex;"><span>├── _rels/
</span></span><span style="display:flex;"><span>│   └── .rels
</span></span><span style="display:flex;"><span>├── docProps/
</span></span><span style="display:flex;"><span>│   ├── app.xml
</span></span><span style="display:flex;"><span>│   └── core.xml
</span></span><span style="display:flex;"><span>└── ppt/
</span></span><span style="display:flex;"><span>    ├── presentation.xml
</span></span><span style="display:flex;"><span>    ├── _rels/
</span></span><span style="display:flex;"><span>    ├── slides/
</span></span><span style="display:flex;"><span>    ├── slideLayouts/
</span></span><span style="display:flex;"><span>    ├── slideMasters/
</span></span><span style="display:flex;"><span>    ├── theme/
</span></span><span style="display:flex;"><span>    └── media/
</span></span></code></pre></div><p>हर एक विज़ुअल एसेट, ट्रांज़िशन, स्लाइड मास्टर इनहेरिटेंस, टेक्स्ट बॉक्स कॉर्डिनेट, और वेक्टर ग्राफ़िक इस फ़ाइल पदानुक्रम में कोडित होते हैं।</p>
<h2 id="2-पकज-क-सरचन-परमख-उपपरणलय">2. पैकेज की संरचना: प्रमुख उपप्रणालियाँ</h2>
<p>प्रेज़ेंटेशन को प्रभावी ढंग से रिवर्स इंजीनियर करने के लिए, आपको प्रत्येक टॉप-लेवल घटक की जिम्मेदारियों को समझना होगा।</p>
<h3 id="content_typesxml"><code>[Content_Types].xml</code></h3>
<p>यह OPC रीडर के लिए एंट्री मैनिफेस्ट है। यह फ़ाइल एक्सटेंशन और स्पष्ट आंतरिक भाग नामों को मानकीकृत MIME/कंटेंट टाइप्स से मैप करता है। यदि आप एक नई स्लाइड बनाते हैं या कोई इमेज जोड़ते हैं और उसे <code>[Content_Types].xml</code> में घोषित करना भूल जाते हैं, तो PowerPoint डेक को भ्रष्ट घोषित करेगा और पुनर्प्राप्ति के लिए प्रॉम्प्ट देगा।</p>
<p>उदाहरण स्निपेट:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#f92672">&lt;Types</span> <span style="color:#a6e22e">xmlns=</span><span style="color:#e6db74">&#34;http://schemas.openxmlformats.org/package/2006/content-types&#34;</span><span style="color:#f92672">&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Default</span> <span style="color:#a6e22e">Extension=</span><span style="color:#e6db74">&#34;xml&#34;</span> <span style="color:#a6e22e">ContentType=</span><span style="color:#e6db74">&#34;application/xml&#34;</span><span style="color:#f92672">/&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Default</span> <span style="color:#a6e22e">Extension=</span><span style="color:#e6db74">&#34;rels&#34;</span> <span style="color:#a6e22e">ContentType=</span><span style="color:#e6db74">&#34;application/vnd.openxmlformats-package.relationships+xml&#34;</span><span style="color:#f92672">/&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Default</span> <span style="color:#a6e22e">Extension=</span><span style="color:#e6db74">&#34;png&#34;</span> <span style="color:#a6e22e">ContentType=</span><span style="color:#e6db74">&#34;image/png&#34;</span><span style="color:#f92672">/&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Override</span> <span style="color:#a6e22e">PartName=</span><span style="color:#e6db74">&#34;/ppt/presentation.xml&#34;</span> 
</span></span><span style="display:flex;"><span>            <span style="color:#a6e22e">ContentType=</span><span style="color:#e6db74">&#34;application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml&#34;</span><span style="color:#f92672">/&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/Types&gt;</span>
</span></span></code></pre></div><h3 id="the-_rels-रलशनशप-गरफ">The <code>_rels/</code> रिलेशनशिप ग्राफ</h3>
<p>OpenXML में सबसे महत्वपूर्ण अवधारणाओं में से एक है <strong>रिलेशनशिप्स के माध्यम से अप्रत्यक्षता</strong>। भाग अक्सर सीधे कच्चे फ़ाइल पथों की ओर संकेत नहीं करते। इसके बजाय, एक फ़ाइल (उदाहरण के लिए <code>slide1.xml</code>) का संबंधित रिलेशनशिप फ़ाइल एक समान स्तर के <code>_rels</code> फ़ोल्डर में स्थित होती है (उदाहरण के लिए <code>_rels/slide1.xml.rels</code>)।</p>
<p>रिलेशनशिप्स परिभाषित करते हैं:</p>
<ul>
<li>हाइपरलिंक्स (<code>r:id=&quot;rId2&quot;</code>, TargetMode=&ldquo;External&rdquo;)</li>
<li><code>ppt/media/</code> में संग्रहीत छवियां और ऑडियो ट्रैक</li>
<li>लेआउट विरासत संकेतक (<code>slideLayout1.xml</code>)</li>
<li>नोट्स स्लाइड्स, टिप्पणियां, और एम्बेडेड फ़ॉन्ट्स</li>
</ul>
<h3 id="docprops-मटडट"><code>docProps/</code> (मेटाडेटा)</h3>
<ul>
<li><strong><code>core.xml</code></strong>: डब्लिन कोर मेटाडाटा—लेखक, शीर्षक, निर्माण तिथि, संशोधन टाइमस्टैम्प।</li>
<li><strong><code>app.xml</code></strong>: एप्लिकेशन-विशिष्ट आँकड़े—PowerPoint संस्करण, कुल स्लाइड गिनती, छिपी स्लाइड गिनती, शब्द गिनती, प्रस्तुति टेम्पलेट नाम।</li>
</ul>
<h3 id="ppt-परजटशन-इजन"><code>ppt/</code> (प्रेजेंटेशन इंजन)</h3>
<p>यहाँ वास्तविक प्रस्तुति स्थित है:</p>
<ul>
<li><strong><code>presentation.xml</code></strong>: मुख्य रीढ़। यह स्लाइड आईडी, स्लाइड आकार आयाम, नोट्स मास्टर संदर्भ, और डिफ़ॉल्ट फ़ॉन्ट सेटिंग्स को पंजीकृत करता है।</li>
<li><strong><code>slides/</code></strong>: व्यक्तिगत स्लाइड्स (<code>slide1.xml</code>, <code>slide2.xml</code>, आदि)।</li>
<li><strong><code>slideLayouts/</code></strong>: मुख्य संरचनात्मक प्रीसेट (शीर्षक स्लाइड, दो कॉलम, सेक्शन हेडर)।</li>
<li><strong><code>slideMasters/</code></strong>: वैश्विक शैलियाँ, डिफ़ॉल्ट पैलेट, पृष्ठभूमि भराव, और प्लेसहोल्डर विरासत।</li>
<li><strong><code>theme/</code></strong>: रंग पैलेट (एक्सेंट 1 से 6, डार्क/लाइट विविधताएँ) और फ़ॉन्ट स्कीम (मुख्य/उपफ़ॉन्ट)।</li>
<li><strong><code>media/</code></strong>: कच्ची छवियाँ (PNG, JPEG, SVG), ऑडियो, और वीडियो फ़ाइलें।</li>
</ul>
<h2 id="3-सलइड-क-वशलषण-परजटशनएमएल-p-एव-डरइगएमएल-a-डयलकटस">3. स्लाइड का विश्लेषण: प्रेजेंटेशनएमएल (<code>p:</code>) एवं ड्रॉइंगएमएल (<code>a:</code>) डायलैक्ट्स</h2>
<p>जब आप <code>ppt/slides/slide1.xml</code> खोलते हैं, तो आप दो मुख्य XML नेमस्पेस देखते हैं:</p>
<ol>
<li><strong>PresentationML (<code>p:</code>)</strong>: संरचनात्मक प्रस्तुति तत्वों (स्लाइड्स, आकार वृक्ष, कैनवास समूह) को नियंत्रित करता है।</li>
<li><strong>DrawingML (<code>a:</code>)</strong>: टाइपोग्राफी, ज्यामिति, 2D निर्देशांक, ग्रेडिएंट भराव, और वेक्टर रेंडरिंग को नियंत्रित करता है।</li>
</ol>
<p>यहाँ एक सरल उदाहरण है कि एक मानक टेक्स्ट आकार कैसे दिखता है:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#f92672">&lt;p:sp&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#75715e">&lt;!-- 1. Non-visual shape properties (Identifiers, names) --&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;p:nvSpPr&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;p:cNvPr</span> <span style="color:#a6e22e">id=</span><span style="color:#e6db74">&#34;4&#34;</span> <span style="color:#a6e22e">name=</span><span style="color:#e6db74">&#34;Title Box 1&#34;</span><span style="color:#f92672">/&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;p:cNvSpPr&gt;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&lt;a:spLocks</span> <span style="color:#a6e22e">noGrp=</span><span style="color:#e6db74">&#34;1&#34;</span><span style="color:#f92672">/&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;/p:cNvSpPr&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;p:nvPr&gt;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&lt;p:ph</span> <span style="color:#a6e22e">type=</span><span style="color:#e6db74">&#34;title&#34;</span><span style="color:#f92672">/&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;/p:nvPr&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;/p:nvSpPr&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#75715e">&lt;!-- 2. Visual shape properties (Position, size, geometry) --&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;p:spPr&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;a:xfrm&gt;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&lt;a:off</span> <span style="color:#a6e22e">x=</span><span style="color:#e6db74">&#34;1524000&#34;</span> <span style="color:#a6e22e">y=</span><span style="color:#e6db74">&#34;1143000&#34;</span><span style="color:#f92672">/&gt;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&lt;a:ext</span> <span style="color:#a6e22e">cx=</span><span style="color:#e6db74">&#34;9144000&#34;</span> <span style="color:#a6e22e">cy=</span><span style="color:#e6db74">&#34;1828800&#34;</span><span style="color:#f92672">/&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;/a:xfrm&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;a:prstGeom</span> <span style="color:#a6e22e">prst=</span><span style="color:#e6db74">&#34;rect&#34;</span><span style="color:#f92672">&gt;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&lt;a:avLst/&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;/a:prstGeom&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;a:solidFill&gt;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&lt;a:schemeClr</span> <span style="color:#a6e22e">val=</span><span style="color:#e6db74">&#34;accent1&#34;</span><span style="color:#f92672">/&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;/a:solidFill&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;/p:spPr&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#75715e">&lt;!-- 3. Text Body (Paragraphs, runs, styling) --&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;p:txBody&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;a:bodyPr</span> <span style="color:#a6e22e">rtlCol=</span><span style="color:#e6db74">&#34;0&#34;</span> <span style="color:#a6e22e">anchor=</span><span style="color:#e6db74">&#34;ctr&#34;</span><span style="color:#f92672">/&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;a:lstStyle/&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;a:p&gt;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&lt;a:r&gt;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&lt;a:rPr</span> <span style="color:#a6e22e">lang=</span><span style="color:#e6db74">&#34;en-US&#34;</span> <span style="color:#a6e22e">sz=</span><span style="color:#e6db74">&#34;3200&#34;</span> <span style="color:#a6e22e">b=</span><span style="color:#e6db74">&#34;1&#34;</span><span style="color:#f92672">/&gt;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&lt;a:t&gt;</span>Mission Critical Architecture<span style="color:#f92672">&lt;/a:t&gt;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&lt;/a:r&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;/a:p&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;/p:txBody&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/p:sp&gt;</span>
</span></span></code></pre></div><h3 id="महतवपरण-मप-इकइय-emus-और-पइट-क-सकड-हसस">महत्वपूर्ण माप इकाइयाँ: EMUs और पॉइंट के सैकड़ों हिस्से</h3>
<p><code>&lt;a:xfrm&gt;</code> में निर्देशांक संख्याओं पर ध्यान दें:</p>
<ul>
<li><code>x=\&quot;1524000\&quot;</code></li>
<li><code>cx=\&quot;9144000\&quot;</code></li>
</ul>
<p>ये <strong>English Metric Units (EMUs)</strong> हैं।</p>
<ul>
<li>$1 \text{ inch} = 914,400 \text{ EMUs}$</li>
<li>$1 \text{ सेमी} = 360,000 \text{ EMUs}$</li>
<li>$1 \text{ पॉइंट} = 12,700 \text{ EMUs}$</li>
</ul>
<p>EMUs पूर्णांक को दोनों इंच और मिलीमीटर के सटीक अंश को दर्शाने की अनुमति देते हैं, जिससे विभिन्न हार्डवेयर आर्किटेक्चर में फ्लोटिंग‑पॉइंट राउंडिंग त्रुटियों से बचा जा सके।</p>
<p>फ़ॉन्ट आकार पर भी ध्यान दें:</p>
<ul>
<li><code>sz=&quot;3200&quot;</code> का अर्थ है <strong>32.00 पॉइंट</strong>। DrawingML में फ़ॉन्ट आकार पॉइंट के सैंकड़ों हिस्सों में मापा जाता है।</li>
</ul>
<h2 id="4-इनहरटस-चन-शलय-क-अदशय-शलय-कय-वरसत-म-मलत-ह">4. इनहेरिटेंस चेन: शैलियों को अदृश्य शैलियाँ क्यों विरासत में मिलती हैं</h2>
<p>PPTX फ़ाइलों को रिवर्स इंजीनियरिंग करते समय सबसे आम समस्याओं में से एक यह मान लेना है कि किसी आकार की दृश्य शैली पूरी तरह से उसके अपने <code>slideX.xml</code> में घोषित होती है।</p>
<p>वास्तव में, OpenXML एक सख्त <strong>4-स्तरीय क्रमागत विरासत मॉडल</strong> पर निर्भर करता है:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[Theme: ppt/theme/theme1.xml]
</span></span><span style="display:flex;"><span>              │
</span></span><span style="display:flex;"><span>              ▼
</span></span><span style="display:flex;"><span>[Slide Master: ppt/slideMasters/slideMaster1.xml]
</span></span><span style="display:flex;"><span>              │
</span></span><span style="display:flex;"><span>              ▼
</span></span><span style="display:flex;"><span>[Slide Layout: ppt/slideLayouts/slideLayout1.xml]
</span></span><span style="display:flex;"><span>              │
</span></span><span style="display:flex;"><span>              ▼
</span></span><span style="display:flex;"><span>[Slide: ppt/slides/slide1.xml]
</span></span></code></pre></div><p><code>slide1.xml</code> पर एक टेक्स्ट बॉक्स में यदि यह शामिल है:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#f92672">&lt;a:p&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;a:r&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;a:t&gt;</span>Revenue Projections<span style="color:#f92672">&lt;/a:t&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;/a:r&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/a:p&gt;</span>
</span></span></code></pre></div><p>रन (<code>&lt;a:r&gt;</code>) पर कोई फ़ॉन्ट फ़ैमिली, कोई स्पष्ट रंग, और कोई आकार घोषित नहीं है। यह समझने के लिए कि PowerPoint इस टेक्स्ट को कैसे रेंडर करता है, आपके पार्सर को चाहिए:</p>
<ol>
<li>प्लेसहोल्डर प्रकार (<code>&lt;p:ph type=&quot;title&quot;/&gt;</code>) की पहचान करें।</li>
<li><code>slide1.xml.rels</code> में संदर्भित लेआउट पढ़ें।</li>
<li>जाँचें कि <code>slideLayout1.xml</code> उस प्लेसहोल्डर के लिए स्टाइल ओवरराइड प्रदान करता है या नहीं।</li>
<li>डिफ़ॉल्ट शीर्षक टेक्स्ट बॉडी स्टाइल्स के लिए <code>slideMaster1.xml</code> पर वापस जाएँ।</li>
<li><code>accent1</code> या <code>tx1</code> जैसे रंग टोकन को <code>theme1.xml</code> में ट्रेस करें ताकि हेक्साडेसिमल रंग कोड मिल सके।</li>
</ol>
<p>यदि आप इस इनहेरिटेंस ग्राफ़ को छोड़ देते हैं, तो आपका पार्सर स्टाइल्स को गलत पढ़ेगा, फ़ॉन्ट्स, फ़ॉन्ट आकार, और लेआउट एंकर गायब हो जाएंगे।</p>
<h2 id="5-वयवहरक-रवरस-इजनयरग-करयपरवह">5. व्यावहारिक रिवर्स इंजीनियरिंग कार्यप्रवाह</h2>
<p>जब आपको यह जांचना हो कि कोई विशेष PowerPoint फीचर आंतरिक रूप से कैसे काम करता है (जैसे, मोर्फ़ ट्रांज़िशन, जटिल टेबल्स, वेक्टर पाथ्स), तो इस व्यावहारिक दृष्टिकोण का पालन करें:</p>
<h3 id="चरण-1-नयनतम-डफ-पयर-बनए">चरण 1: न्यूनतम &ldquo;डिफ़ पेयर&rdquo; बनाएं</h3>
<ol>
<li>PowerPoint खोलें और एक खाली स्लाइड बनाएं।</li>
<li>इसे <code>before.pptx</code> के रूप में सहेजें।</li>
<li>वह सटीक एकल परिवर्तन लागू करें जिसे आप रिवर्स इंजीनियर करना चाहते हैं (उदाहरण के लिए, एक वृत्त में ड्रॉप शैडो जोड़ें, बुलेट शैली बदलें, एम्बेडेड वीडियो डालें)।</li>
<li>इसे <code>after.pptx</code> के रूप में सहेजें।</li>
</ol>
<h3 id="चरण-2-दन-अभलख-क-अनपक-कर">चरण 2: दोनों अभिलेखों को अनपैक करें</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>unzip before.pptx -d before/
</span></span><span style="display:flex;"><span>unzip after.pptx -d after/
</span></span></code></pre></div><h3 id="चरण-3-xml-क-फरमट-कर">चरण 3: XML को फ़ॉर्मेट करें</h3>
<p>Office अभिलेखों के भीतर कच्चा XML आमतौर पर इंडेंटेशन और नई पंक्ति अक्षरों को हटा दिया जाता है। तुलना करने से पहले, फ़ाइलों को फ़ॉर्मेट करें:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>find before/ after/ -name <span style="color:#e6db74">&#34;*.xml&#34;</span> -exec xmllint --format <span style="color:#f92672">{}</span> --output <span style="color:#f92672">{}</span> <span style="color:#ae81ff">\;</span>
</span></span></code></pre></div><h3 id="चरण-4-एककत-डफ-चलए">चरण 4: एकीकृत डिफ़ चलाएँ</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>diff -uNr before/ after/ &gt; changes.patch
</span></span></code></pre></div><p><code>changes.patch</code> की समीक्षा करने से PowerPoint द्वारा प्रस्तुत सटीक टैग नाम, नेमस्पेस एट्रिब्यूट, और कंटेनर पदानुक्रम प्रकट होते हैं। यह अनडॉक्यूमेंटेड या अस्पष्ट स्कीमा प्रॉपर्टीज़ को हजारों पृष्ठों की ECMA-376 दस्तावेज़ीकरण में गहराई से खोजे बिना खोजने का सबसे तेज़ तरीका है।</p>
<h2 id="6-एक-कसटम-मइकर-इजन-बनन-अनपक-सशधत-रपक">6. एक कस्टम माइक्रो-इंजन बनाना: अनपैक, संशोधित, रीपैक</h2>
<p>कभी-कभी आप Apache POI या Microsoft OpenXML SDK जैसी भारी एंटरप्राइज़ निर्भरता नहीं चाहते—विशेषकर हल्के सर्वरलेस रनटाइम्स (AWS Lambda, Cloudflare Workers, एज नोड्स) में।</p>
<p>यहाँ एक स्व-निहित Python पैटर्न है जो दिखाता है कि कैसे सुरक्षित रूप से इन-मेमोरी PPTX को अनज़िप करें, मानक लाइब्रेरी टूल्स का उपयोग करके कस्टम डेटा इंजेक्ट करें, और इसे पुनः पैकेज करें:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> zipfile
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> io
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> xml.etree.ElementTree <span style="color:#66d9ef">as</span> ET
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">modify_slide_title</span>(input_pptx_bytes: bytes, new_title: str) <span style="color:#f92672">-&gt;</span> bytes:
</span></span><span style="display:flex;"><span>    input_zip <span style="color:#f92672">=</span> zipfile<span style="color:#f92672">.</span>ZipFile(io<span style="color:#f92672">.</span>BytesIO(input_pptx_bytes))
</span></span><span style="display:flex;"><span>    output_buffer <span style="color:#f92672">=</span> io<span style="color:#f92672">.</span>BytesIO()
</span></span><span style="display:flex;"><span>    
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">with</span> zipfile<span style="color:#f92672">.</span>ZipFile(output_buffer, <span style="color:#e6db74">&#34;w&#34;</span>, zipfile<span style="color:#f92672">.</span>ZIP_DEFLATED) <span style="color:#66d9ef">as</span> output_zip:
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span> item <span style="color:#f92672">in</span> input_zip<span style="color:#f92672">.</span>infolist():
</span></span><span style="display:flex;"><span>            content <span style="color:#f92672">=</span> input_zip<span style="color:#f92672">.</span>read(item<span style="color:#f92672">.</span>filename)
</span></span><span style="display:flex;"><span>            
</span></span><span style="display:flex;"><span>            <span style="color:#75715e"># Target slide 1</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span> item<span style="color:#f92672">.</span>filename <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;ppt/slides/slide1.xml&#34;</span>:
</span></span><span style="display:flex;"><span>                namespaces <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>                    <span style="color:#e6db74">&#39;p&#39;</span>: <span style="color:#e6db74">&#39;http://schemas.openxmlformats.org/presentationml/2006/main&#39;</span>,
</span></span><span style="display:flex;"><span>                    <span style="color:#e6db74">&#39;a&#39;</span>: <span style="color:#e6db74">&#39;http://schemas.openxmlformats.org/drawingml/2006/main&#39;</span>
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>                
</span></span><span style="display:flex;"><span>                <span style="color:#75715e"># Register namespaces to preserve prefixes</span>
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">for</span> prefix, uri <span style="color:#f92672">in</span> namespaces<span style="color:#f92672">.</span>items():
</span></span><span style="display:flex;"><span>                    ET<span style="color:#f92672">.</span>register_namespace(prefix, uri)
</span></span><span style="display:flex;"><span>                    
</span></span><span style="display:flex;"><span>                root <span style="color:#f92672">=</span> ET<span style="color:#f92672">.</span>fromstring(content)
</span></span><span style="display:flex;"><span>                
</span></span><span style="display:flex;"><span>                <span style="color:#75715e"># Find title placeholder text run</span>
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">for</span> title_run <span style="color:#f92672">in</span> root<span style="color:#f92672">.</span>findall(<span style="color:#e6db74">&#34;.//p:sp[p:nvSpPr/p:nvPr/p:ph[@type=&#39;title&#39;]]//a:t&#34;</span>, namespaces):
</span></span><span style="display:flex;"><span>                    title_run<span style="color:#f92672">.</span>text <span style="color:#f92672">=</span> new_title
</span></span><span style="display:flex;"><span>                    <span style="color:#66d9ef">break</span>
</span></span><span style="display:flex;"><span>                
</span></span><span style="display:flex;"><span>                content <span style="color:#f92672">=</span> ET<span style="color:#f92672">.</span>tostring(root, encoding<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;utf-8&#34;</span>, xml_declaration<span style="color:#f92672">=</span><span style="color:#66d9ef">True</span>)
</span></span><span style="display:flex;"><span>            
</span></span><span style="display:flex;"><span>            output_zip<span style="color:#f92672">.</span>writestr(item, content)
</span></span><span style="display:flex;"><span>            
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> output_buffer<span style="color:#f92672">.</span>getvalue()
</span></span></code></pre></div><h3 id="कचच-बइट-सतर-पर-फइल-क-सशधत-करत-समय-मखय-सवधनय">कच्चे बाइट स्तर पर फ़ाइलों को संशोधित करते समय मुख्य सावधानियां:</h3>
<ol>
<li><strong>Namespace Preservation</strong>: XML पार्सर अक्सर प्रीफ़िक्स को पुनः लिखते हैं (<code>xmlns:p</code> <code>xmlns:ns0</code> बन सकता है)। जबकि यह वैध XML है, PowerPoint की सख्त आंतरिक स्कीमा वैधता कभी‑कभी गैर‑मानक प्रीफ़िक्स उपनामों को अस्वीकार करती है। नेमस्पेस को स्पष्ट रूप से रजिस्टर करें।</li>
<li><strong>ZIP Compression Methods</strong>: सुनिश्चित करें कि आप फ़ाइलों को मानक डिफ्लेट संपीड़न (<code>zipfile.ZIP_DEFLATED</code>) का उपयोग करके वापस लिखें।</li>
<li><strong>Stream Flushing</strong>: हमेशा जाँचें कि आपका ज़िप बफ़र पूरी तरह बंद और फ्लश हो गया है इससे पहले कि आप बाइट्स को डाउनस्ट्रीम भेजें।</li>
<li><strong>Preserve Relationships</strong>: यदि आप कोई स्लाइड हटाते हैं, तो आपको उसकी प्रविष्टि <code>ppt/presentation.xml</code> से भी हटानी होगी, <code>ppt/_rels/presentation.xml.rels</code> में उसका संबंध हटाना होगा, और <code>[Content_Types].xml</code> से उसका कंटेंट टाइप साफ़ करना होगा।</li>
</ol>
<h2 id="7-परदरशन-और-सरकष-वचर">7. प्रदर्शन और सुरक्षा विचार</h2>
<p>PPTX फ़ाइलों का रिवर्स इंजीनियरिंग केवल स्लाइड्स को संपादित करने के बारे में नहीं है; यह यह भी जांचने के बारे में है कि आपके सिस्टम में क्या प्रवेश करता है।</p>
<h3 id="सरकष-बलयन-हस--xxe">सुरक्षा: बिलियन हँसी &amp; XXE</h3>
<p>क्योंकि PPTX फ़ाइलें XML को पार्स करती हैं, कोई भी सर्वर‑साइड पाइपलाइन जो उपयोगकर्ता‑प्रस्तुत प्रस्तुतियों को ग्रहण करती है, निम्नलिखित के प्रति संवेदनशील होती है:</p>
<ul>
<li><strong>XML External Entity (XXE) Injection</strong>: दुर्भावनापूर्ण XML जो <code>/etc/passwd</code> तक पहुँचने या आंतरिक क्लाउड मेटाडाटा एंडपॉइंट्स (<code>http://169.254.169.254/</code>) को क्वेरी करने का प्रयास करता है।</li>
<li><strong>Entity Expansion Attacks (Billion Laughs)</strong>: घातीय एंटिटी लूप्स जो सिस्टम RAM को समाप्त कर देते हैं।</li>
</ul>
<p><strong>निवारण</strong>: हमेशा अपने XML पार्सर में <code>resolve_entities</code>, <code>load_dtd</code>, और बाहरी नेटवर्क रिज़ॉल्यूशन को अक्षम करें (उदाहरण के लिए, Python में <code>defusedxml</code> का उपयोग करके)।</p>
<h3 id="सरकष-मकर-पलडस-और-छप-हई-सटरमस">सुरक्षा: मैक्रो पेलोड्स और छिपी हुई स्ट्रीम्स</h3>
<p>फ़ाइलों की जाँच करें कि क्या <code>.pptm</code> सामग्री <code>.pptx</code> एक्सटेंशन के तहत छिपी हुई है। <code>ppt/vbaProject.bin</code> पर ध्यान दें, जिसमें संकलित विज़ुअल बेसिक कोड होता है। मानक <code>.pptx</code> फ़ाइलों में VBA कोड प्रतिबंधित है; संबंधों में बाइनरी पेलोड संदर्भ मिलते ही तुरंत क्वारंटीन फ़्लैग ट्रिगर होना चाहिए।</p>
<h2 id="नषकरष">निष्कर्ष</h2>
<p><code>.pptx</code> फ़ाइलों की रिवर्स इंजीनियरिंग प्रस्तुति सॉफ़्टवेयर को स्पष्ट करती है। एक बार जब आप समझते हैं कि PowerPoint फ़ाइलें केवल समन्वय, स्कीमा रेफ़रेंसेज़ और XML रिलेशनशिप ट्रीज़ से भरे संरचित ज़िप पैकेज हैं, तो आप मौजूदा तृतीय‑पक्षीय एब्स्ट्रैक्शन से बंधे नहीं रहते।</p>
<p>चाहे आप स्लाइड जनरेशन थ्रूपुट को अनुकूलित कर रहे हों, कस्टम ऑटोमेटेड सैनिटाइज़र लिख रहे हों, या रेंडरिंग गड़बड़ियों का समाधान कर रहे हों, मूल OpenXML आर्किटेक्चर को सीधे देखना आपको प्रस्तुति पाइपलाइन पर पूर्ण नियंत्रण देता है।</p>
<h2 id="अकसर-पछ-जन-वल-परशन-faq">अक्सर पूछे जाने वाले प्रश्न (FAQ)</h2>
<p>**Q: क्या आप .pptx को एक मानक फ़ोल्डर में परिवर्तित कर सकते हैं और फ़ाइलों को सीधे किसी IDE में संपादित कर सकते हैं?</p>
<p><strong>A1:</strong> हाँ, आप आर्काइव को निकाल सकते हैं, VS Code जैसे एडिटर में XML को संपादित कर सकते हैं, और डायरेक्टरी की सामग्री को फिर से ज़िप करके PowerPoint में वापस खोल सकते हैं।</p>
<p>**Q: PowerPoint क्यों कहता है कि मेरी मैन्युअली संशोधित PPTX फ़ाइल को मरम्मत की आवश्यकता है?</p>
<p><strong>A2:</strong> यह आमतौर पर तब होता है जब आप विकृत XML पेश करते हैं, <code>[Content_Types].xml</code> से नया एसेट छोड़ देते हैं, या संबंधित <code>.rels</code> फ़ाइल में लटकी हुई संदर्भ छोड़ देते हैं।</p>
<p>**Q: PowerPoint आकार की स्थितियों और मार्जिन के लिए कौन सी माप इकाई उपयोग करता है?</p>
<p><strong>A3:</strong> PowerPoint अंग्रेज़ी मीट्रिक यूनिट्स (EMUs) का उपयोग करता है, जहाँ 1 इंच बराबर 914,400 EMUs और 1 पॉइंट बराबर 12,700 EMUs होता है।</p>
<p>**Q: मैं एक प्रस्तुति से सभी छवियों को बाहरी लाइब्रेरीज़ के बिना <a href="https://products.fileformat.com/presentation/python/python-pptx/">प्रोग्रामेटिक रूप से निकालें</a> कैसे निकाल सकता हूँ?</p>
<p><strong>A4:</strong> सिर्फ़ <code>.pptx</code> फ़ाइल को किसी भी मानक ज़िप यूटिलिटी से खोलें और <code>ppt/media/</code> निर्देशिका के अंदर स्थित सभी बाइनरी फ़ाइलें निकालें।</p>
<p>**Q: क्या मानक XML पार्सरों के साथ उपयोगकर्ता द्वारा अपलोड की गई PPTX फ़ाइलों को पार्स करना सुरक्षित है?</p>
<p><strong>A5:</strong> नहीं, आपको अपने पार्सर को मजबूत बनाना होगा या <code>defusedxml</code> जैसी सुरक्षित रैपर का उपयोग करना होगा ताकि XML External Entity (XXE) और ज़िप‑बॉम्ब हमलों को रोका जा सके।</p>
<h2 id="और-दख">और देखें</h2>
<ul>
<li><a href="https://blog.fileformat.com/presentation/powerpoint-file-formats/">FileFormat.com पर प्रस्तुति फ़ाइल फ़ॉर्मेट?</a></li>
<li><a href="https://blog.fileformat.com/presentation/apache-poi-api-to-access-powerpoint-file-formats/">PowerPoint फ़ाइल फ़ॉर्मेट तक पहुँचने के लिए Java API</a></li>
<li><a href="https://blog.fileformat.com/presentation/odp-vs-pptx-opendocument-vs-microsoft-powerpoint-format-comparison/">ODP बनाम PPTX: OpenDocument बनाम Microsoft PowerPoint प्रस्तुति फ़ॉर्मेट तुलना</a></li>
<li><a href="https://blog.fileformat.com/presentation/difference-between-ppt-and-pptx/">PPT और PPTX के बीच अंतर</a></li>
<li><a href="https://blog.fileformat.com/presentation/create-presentation-in-java-with-apache-poi-api/">जावा में Apache POI API का उपयोग करके PowerPoint प्रस्तुति बनाएं</a></li>
</ul>
<!-- raw HTML omitted -->
]]></content:encoded>
    </item>
    
  </channel>
</rss>
