<?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 Tərs Mühəndisliyi on File Format Blog</title>
    <link>https://blog.fileformat.com/az/tag/pptx-t%C9%99rs-m%C3%BCh%C9%99ndisliyi/</link>
    <description>Recent content in PPTX Tərs Mühəndisliyi on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>az</language>
    <lastBuildDate>Wed, 16 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/az/tag/pptx-t%C9%99rs-m%C3%BCh%C9%99ndisliyi/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>PPTX Tərs Mühəndisliyi: PowerPoint Fayllarını Daxili olaraq Anlamaq</title>
      <link>https://blog.fileformat.com/az/presentation/pptx-reverse-engineering-understanding-powerpoint-files-internally/</link>
      <pubDate>Wed, 16 Sep 2026 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/az/presentation/pptx-reverse-engineering-understanding-powerpoint-files-internally/</guid>
      <description>`.pptx` faylının içində həqiqətən nəyin olduğunu kəşf edin. OpenXML paketlənməsi, əlaqə qrafikləri, formalar və çəkmə işarələməsinin necə işlədiyini öyrənin.</description>
      <content:encoded><![CDATA[<p><strong>Son Yenilənmə</strong>: 16 Sentyabr, 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="tərs-mühəndislik-pptx4-faylları-inkişafçılar-üçün-bələdçi">Tərs Mühəndislik <a href="https://docs.fileformat.com/presentation/pptx/">PPTX</a> Faylları: İnkişafçılar üçün Bələdçi</h2>
<p>Müasir təqdimat dəftərləri investor təqdimatlarından daxili rüblük göstəricilərə qədər hər şeyi gücləndirir. Ancaq mətn çıxarmaq, şablonları icra zamanı dəyişdirmək, avtomatlaşdırılmış slayd generatorları yaratmaq və ya məxfi təqdimatları təmizləmək üçün proqramlaşdırma ilə məşğul olmusunuzsa, çox tez bir şey başa düşmüş ola bilərsiniz: standart yüksək səviyyəli təqdimat kitabxanaları proqnozlaşdırıla bilməyən qara qutu kimi hiss oluna bilər.</p>
<p>Bu kitabxanalar kimi <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> və ya <a href="https://products.fileformat.com/presentation/net/openxmlsdk/">OpenXML SDK</a> limitlərinə çatdıqda—və ya sənədləşdirilməmiş layout səhvləri təqdim etdikdə—yeganə çıxış yolu içəridən keçməkdir. PowerPoint təqdimatının byte və sxem səviyyəsində nə olduğunu başa düşməlisiniz.</p>
<p>Bu dərin araşdırmada, <code>.pptx</code> formatının pərdəsini arxadan çəkəcəyik, onun daxili strukturu açacağıq, əlaqə qrafikini izləyəcəyik, çəkmə iyerarxiyalarını təhlil edəcəyik və təqdimatları xam kodla tərs mühəndislik, yoxlama və manipulyasiya üçün praktik strategiyalara baxacağıq.</p>
<h2 id="1-pptx-faylı-əslində-nədir">1. <code>.pptx</code> Faylı Əslində Nədir?</h2>
<p>Əsasən, <code>.pptx</code> faylı 1990-cı illərin köhnə <code>.ppt</code> formatı kimi özəl monolitik ikili fayl deyil. Microsoft Office Open XML (ECMA-376 və ISO/IEC 29500) təqdim edəndən bəri, müasir Office sənədləri <strong>Open Packaging Conventions (OPC) arxivləri</strong>dir.</p>
<p>Sadə dildə: <strong><code>.pptx</code> faylı sadəcə XML sənədləri və media aktivlərini müəyyən bir qovluq ağacında təşkil edən zip arxividir.</strong></p>
<p>Bunu standart terminal alətləri ilə saniyələr içində sübut edə bilərsiniz:</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>Nəticədə yaranan qovluq ağacı heyrətamiz dərəcədə tutarlı görünür:</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>Hər bir vizual aktiv, keçid, slayd masteri irsi, mətn qutusu koordinatı və vektor qrafiki bu fayl iyerarxiyasında kodlaşdırılmışdır.</p>
<h2 id="2-paketin-anatomiyası-əsas-alt-sistemlər">2. Paketin Anatomiyası: Əsas Alt Sistemlər</h2>
<p>Təqdimatları effektiv şəkildə ters mühəndislik etmək üçün, hər bir yuxarı səviyyəli komponentin məsuliyyətlərini başa düşməlisiniz.</p>
<h3 id="content_typesxml"><code>[Content_Types].xml</code></h3>
<p>Bu, OPC oxuyucusu üçün giriş manifestidir. Fayl uzantılarını və açıq daxili hissə adlarını standartlaşdırılmış MIME/məzmun tiplərinə xəritələyir. Yeni slayd yaratsanız və ya şəkil əlavə edəsiniz və onu <code>[Content_Types].xml</code>-də bəyan etməsəniz, PowerPoint dəsti korlanmış kimi elan edəcək və bərpa üçün soruşacaq.</p>
<p>Nümunə kod parçacığı:</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="_rels-əlaqə-qrafiki"><code>_rels/</code> Əlaqə Qrafiki</h3>
<p>OpenXML-də ən vacib anlayışlardan biri <strong>əlaqələr vasitəsilə dolayı yönləndirmə</strong>dir. Hissələr nadir hallarda birbaşa xam fayl yollarına işarə edir. Bunun əvəzinə, bir fayl (məsələn, <code>slide1.xml</code>) əlaqəli bir əlaqə faylına malikdir və bu fayl qardaş <code>_rels</code> qovluğunda yerləşir (məsələn., <code>_rels/slide1.xml.rels</code>).</p>
<p>Əlaqələr müəyyən edir:</p>
<ul>
<li>Hiperlinklər (<code>r:id=&quot;rId2&quot;</code>, TargetMode=&ldquo;External&rdquo;)</li>
<li><code>ppt/media/</code>-də saxlanılan şəkillər və audio treklər</li>
<li>Dizayn irsi göstəriciləri (<code>slideLayout1.xml</code>)</li>
<li>Qeydlər slaydları, şərhlər və gömülü şriftlər</li>
</ul>
<h3 id="docprops-meta-məlumatlar"><code>docProps/</code> (Meta Məlumatlar)</h3>
<ul>
<li><strong><code>core.xml</code></strong>: Dublin Core metadata—müəllif, başlıq, yaradılma tarixi, dəyişiklik zaman möhürü.</li>
<li><strong><code>app.xml</code></strong>: Tətbiqə xas statistikalar—PowerPoint versiyası, ümumi slayd sayı, gizli slayd sayı, söz sayı, təqdimat şablonu adları.</li>
</ul>
<h3 id="ppt-təqdimat-mühərriki"><code>ppt/</code> (Təqdimat Mühərriki)</h3>
<p>Bura faktiki təqdimatın yerləşdiyi yerdir:</p>
<ul>
<li><strong><code>presentation.xml</code></strong>: Master sümüydür. O, slayd ID-lərini, slayd ölçüləri ölçülərini, qeydlər master istinadlarını və standart şrift tənzimləmələrini qeyd edir.</li>
<li><strong><code>slides/</code></strong>: Fərdi slaydlar (<code>slide1.xml</code>, <code>slide2.xml</code>, və s.).</li>
<li><strong><code>slideLayouts/</code></strong>: Master struktur ön ayarları (Başlıq Slaydı, İki Sütun, Bölmə Başlığı).</li>
<li><strong><code>slideMasters/</code></strong>: Qlobal üslublar, standart paletlər, fon doldurmaları və yer tutucu irsi.</li>
<li><strong><code>theme/</code></strong>: Rəng paletləri (accent 1-dən 6-ya, tünd/işıqlı varyantlar) və şrift sxemləri (əsas/kiçik şriftlər).</li>
<li><strong><code>media/</code></strong>: Xam şəkillər (PNG, JPEG, SVG), audio və video faylları.</li>
</ul>
<h2 id="3-slaydı-təhlil-etmək-presentationml-p-və-drawingml-a-dialektləri">3. Slaydı Təhlil Etmək: PresentationML (<code>p:</code>) və DrawingML (<code>a:</code>) Dialektləri</h2>
<p><code>ppt/slides/slide1.xml</code> faylını açdığınızda, iki əsas XML ad məkanı ilə qarşılaşırsınız:</p>
<ol>
<li><strong>PresentationML (<code>p:</code>)</strong>: Struktur təqdimat elementlərini (slaydlar, forma ağacları, kanvas qrupları) idarə edir.</li>
<li><strong>DrawingML (<code>a:</code>)</strong>: Tipografiya, həndəsə, 2D koordinatları, gradient doldurmaları və vektor renderləməsini idarə edir.</li>
</ol>
<p>Budur standart mətn formasının necə göründüyünün sadələşdirilmiş nümunəsi:</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="əhəmiyyətli-ölçü-vahidləri-emu-lar-və-nöqtənin-yüzdə-bir-hissəsi">Əhəmiyyətli Ölçü Vahidləri: EMU-lar və Nöqtənin Yüzdə Bir Hissəsi</h3>
<p><code>&lt;a:xfrm&gt;</code> içindəki koordinat nömrələrinə diqqət yetirin:</p>
<ul>
<li><code>x=&quot;1524000&quot;</code></li>
<li><code>cx=&quot;9144000&quot;</code></li>
</ul>
<p>Bunlar **İngilis Metrik Vahidləri (EMU)**dır.</p>
<ul>
<li>$1 \text{ inch} = 914,400 \text{ EMUs}$</li>
<li>$1 \text{ sm} = 360,000 \text{ EMUs}$</li>
<li>$1 \text{ pt} = 12,700 \text{ EMUs}$</li>
</ul>
<p>EMU-lar tam ədədlərin düymlər və millimetrlərin dəqiq kəsrlərini təmsil etməsinə imkan verir, müxtəlif avadanlıq arxitekturalarında üzən nöqtə yuvarlaqlaşdırma səhvləri olmadan.</p>
<p>Həmçinin şrift ölçüsünə baxın:</p>
<ul>
<li><code>sz=\&quot;3200\&quot;</code> <strong>32.00 pt</strong> deməkdir. DrawingML-də şrift ölçüləri nöqtənin yüzdə bir hissəsi ilə ölçülür.</li>
</ul>
<h2 id="4-irs-zənciri-niyə-formalar-görünməz-stiləri-irs-alır">4. İrs Zənciri: Niyə Formalar Görünməz Stiləri İrs alır</h2>
<p>PPTX fayllarını tərs mühəndislik edərkən ən yaygın çətinliklərdən biri, bir formanın vizual tərzinin tam olaraq öz <code>slideX.xml</code> faylında bəyan edildiyini düşünməkdir.</p>
<p>Əslində, OpenXML sərt <strong>4-səviyyəli kaskadlı irsi model</strong>-ə əsaslanır:</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>-dəki bir mətn qutusu aşağıdakını ehtiva edirsə:</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>Run (<code>&lt;a:r&gt;</code>) üzərində heç bir şrift ailəsi, açıq rəng və ölçü təyin edilməyib. PowerPoint-un bu mətnı necə göstərdiyini müəyyən etmək üçün parseriniz aşağıdakını etməlidir:</p>
<ol>
<li>Yer tutucu növünü müəyyən edin (<code>&lt;p:ph type=&quot;title&quot;/&gt;</code>).</li>
<li><code>slide1.xml.rels</code>-də istinad edilən layoutu oxuyun.</li>
<li><code>slideLayout1.xml</code>-in həmin yer tutucu üçün stil dəyişiklikləri təmin edib-etmədiyini yoxlayın.</li>
<li>Defolt başlıq mətn bədəni stilləri üçün <code>slideMaster1.xml</code>-ə geri dönün.</li>
<li><code>accent1</code> və ya <code>tx1</code> kimi rəng tokenlərini <code>theme1.xml</code>-də izləyərək onaltılıq rəng kodunu tapın.</li>
</ol>
<p>Bu irsi qrafiki atlarsanız, parseriniz stilləri, şriftləri, şrift ölçülərini və layout ankrlərini səhv oxuyacaq.</p>
<h2 id="5-praktik-tərs-mühəndislik-iş-axını">5. Praktik Tərs Mühəndislik İş Axını</h2>
<p>Müəyyən bir PowerPoint funksiyasının daxili işləməsini araşdırmaq lazım olduqda (məsələn, morph keçidləri, mürəkkəb cədvəllər, vektor yolları), bu empirik yanaşmanı izləyin:</p>
<h3 id="addım-1-minimal-diff-pair-yaradın">Addım 1: Minimal &ldquo;Diff Pair&rdquo; Yaradın</h3>
<ol>
<li>PowerPoint-u açın və boş slayd yaradın.</li>
<li>Onu <code>before.pptx</code> kimi saxlayın.</li>
<li>Tərs mühəndislik etmək istədiyiniz dəqiq tək dəyişiklik tətbiq edin (məsələn, dairəyə kölgə əlavə edin, büllet stilini dəyişin, gömülü video əlavə edin).</li>
<li>Onu <code>after.pptx</code> kimi saxlayın.</li>
</ol>
<h3 id="addım-2-hər-iki-arxivi-açın">Addım 2: Hər iki Arxivi Açın</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="addım-3-xml-i-formatlaşdırın">Addım 3: XML-i Formatlaşdırın</h3>
<p>Office arxivlərindəki xam XML adətən girintiləri və yeni sətir simvollarını itirir. Fərqləndirmədən əvvəl faylları formatlayın:</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="addım-4-birləşdirilmiş-diff-i-işə-salın">Addım 4: Birləşdirilmiş Diff-i İşə Salın</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>-i incələmək PowerPoint-un təqdim etdiyi dəqiq etiket adını, ad məkan atributunu və konteyner iyerarxiyasını göstərir. Bu, ECMA-376 sənədlərinin minlərlə səhifəsini araşdırmadan sənədləşdirilməmiş və ya qeyri‑açıq sxem xüsusiyyətlərini kəşf etməyin ən sürətli yoludur.</p>
<h2 id="6-özəl-mikro-mühərrik-qurmaq-aç-dəyişdir-yenidən-paketləyin">6. Özəl Mikro-Mühərrik Qurmaq: Aç, Dəyişdir, Yenidən Paketləyin</h2>
<p>Bəzən Apache POI və ya Microsoft OpenXML SDK kimi ağır korporativ asılılıqları istəmirsiniz—xüsusilə yüngül serverless icra mühitlərində (AWS Lambda, Cloudflare Workers, kənar düyünlər).</p>
<p>Budur, yaddaşda olan PPTX faylını təhlükəsiz şəkildə açmaq, standart kitabxana alətləri ilə xüsusi məlumat əlavə etmək və yenidən paketləmək üçün öz‑özünə yetən bir Python nümunəsi:</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="xam-bayt-səviyyəsində-faylları-dəyişdirərkən-əsas-diqqət-yetirilməli-nöqtələr">Xam Bayt Səviyyəsində Faylları Dəyişdirərkən Əsas Diqqət Yetirilməli Nöqtələr:</h3>
<ol>
<li><strong>Namespace Preservation</strong>: XML parserləri tez-tez prefiksləri yenidən yazır (<code>xmlns:p</code> <code>xmlns:ns0</code> ola bilər). Etibarlı XML olsa da, PowerPoint-un sərt daxili sxem doğrulaması bəzən qeyri-standart prefiks ləqəblərini rədd edir. Namespace-ləri açıq şəkildə qeyd edin.</li>
<li><strong>ZIP Compression Methods</strong>: Faylları standart deflate sıxması ilə (<code>zipfile.ZIP_DEFLATED</code>) geri yazdığınızdan əmin olun.</li>
<li><strong>Stream Flushing</strong>: Zip buferinizin tam bağlandığını və tamamilə təmizləndiyini aşağı axına bayt göndərmədən əvvəl həmişə yoxlayın.</li>
<li><strong>Preserve Relationships</strong>: Slaydı silirsinizsə, onun <code>ppt/presentation.xml</code> daxilindəki qeydini də silməli, <code>ppt/_rels/presentation.xml.rels</code>‑dəki əlaqəsini silməli və <code>[Content_Types].xml</code>‑dən məzmun tipini təmizləməlisiniz.</li>
</ol>
<h2 id="7-performans-və-təhlükəsizlik-qeydləri">7. Performans və Təhlükəsizlik Qeydləri</h2>
<p>PPTX fayllarının ters mühəndisliyi yalnız slaydları redaktə etməkdən ibarət deyil; həm də sistemlərinizə daxil olanları audit etmək deməkdir.</p>
<h3 id="təhlükəsizlik-milyard-gülüşlər-və-xxe">Təhlükəsizlik: Milyard Gülüşlər və XXE</h3>
<p>PPTX faylları XML parsələdiyi üçün, istifadəçi təqdim etdiyi təqdimatları qəbul edən hər hansı server‑tərəfli boru xətti aşağıdakılara həssasdır:</p>
<ul>
<li><strong>XML External Entity (XXE) Injection</strong>: <code>/etc/passwd</code>‑a daxil olmağa və ya daxili bulud meta‑məlumat son nöqtələrini (<code>http://169.254.169.254/</code>) sorğulamağa çalışan zərərli XML.</li>
<li><strong>Entity Expansion Attacks (Billion Laughs)</strong>: Sistem RAM‑ını tükədən eksponential varlıq döngüləri.</li>
</ul>
<p><strong>Azaldılması</strong>: Həmişə XML parserinizdə <code>resolve_entities</code>, <code>load_dtd</code> və xarici şəbəkə həllini deaktiv edin (məsələn, Python‑da <code>defusedxml</code> istifadə edərək).</p>
<h3 id="təhlükəsizlik-makro-yüklemələri-və-gizli-axınlar">Təhlükəsizlik: Makro Yüklemələri və Gizli Axınlar</h3>
<p>Faylları <code>.pptm</code> məzmunu <code>.pptx</code> uzantıları altında gizlənib-gizlənmədiyini yoxlayın. <code>ppt/vbaProject.bin</code> faylına diqqət yetirin, çünki bu, tərtib olunmuş Visual Basic kodunu ehtiva edir. Standart <code>.pptx</code> fayllarında VBA kodu qadağandır; əlaqələrdə ikili yükləmə istinadları tapıldıqda dərhal karantin bayraqları işə düşməlidir.</p>
<h2 id="nəticə">Nəticə</h2>
<p><code>.pptx</code> fayllarının ters mühəndisliyi təqdimat proqramını aydınlaşdırır. PowerPoint fayllarının sadəcə koordinatlar, sxem istinadları və XML əlaqə ağacları ilə dolu strukturlaşdırılmış zip paketləri olduğunu başa düşdükdən sonra, mövcud üçüncü tərəf abstraksiyalarından artıq məhdudlaşmırsınız.</p>
<p>Slayd yaradılması sürətini optimallaşdırırsınızsa, xüsusi avtomatlaşdırılmış təmizləyicilər yazırsınızsa və ya renderləmə qüsurlarını aradan qaldırırsınızsa, əsas OpenXML memarlığına birbaşa baxmaq təqdimat boru kəmərinə tam nəzarət verir.</p>
<h2 id="tez-tez-soruşulan-suallar-faq">Tez-tez Soruşulan Suallar (FAQ)</h2>
<p>**Q: Bir .pptx faylını standart qovluğa çevirib faylları birbaşa IDE‑də redaktə edə bilərsinizmi?</p>
<p><strong>A1:</strong> Bəli, arxivi çıxara, XML‑i VS Code kimi bir redaktorda redaktə edə və qovluq məzmununu yenidən zip‑ləyərək PowerPoint‑də aça bilərsiniz.</p>
<p>**Q: PowerPoint niyə əl ilə dəyişdirilmiş PPTX faylımın təmirə ehtiyacı olduğunu bildirir?</p>
<p><strong>A2:</strong> Bu adətən siz səhv XML əlavə etdikdə, <code>[Content_Types].xml</code>-dən yeni aktivliyi çıxartdığınızda və ya əlaqəli <code>.rels</code> faylında asılı bir istinad buraxdığınızda baş verir.</p>
<p>**Q: PowerPoint formaların mövqeləri və kənar boşluqları üçün hansı ölçü vahidindən istifadə edir?</p>
<p><strong>A3:</strong> PowerPoint İngilis Metriq Vahidlərini (EMUs) istifadə edir, burada 1 düym 914,400 EMU-ya, 1 nöqtə isə 12,700 EMU-ya bərabərdir.</p>
<p>**Q: Xarici kitabxanalardan istifadə etmədən təqdimatdan bütün şəkilləri <a href="https://products.fileformat.com/presentation/python/python-pptx/">proqram vasitəsilə çıxarmaq</a> necə edə bilərəm?</p>
<p><strong>A4:</strong> Sadəcə <code>.pptx</code> faylını istənilən standart zip aləti ilə açın və <code>ppt/media/</code> qovluğunda yerləşən bütün ikili faylları çıxarın.</p>
<p>**Q: İstifadəçi yüklədiyi PPTX fayllarını standart XML parserləri ilə təhlil etmək təhlükəsizdirmi?</p>
<p><strong>A5:</strong> Xeyr, parserinizi möhkəmlətməlisiniz və ya <code>defusedxml</code> kimi təhlükəsiz örtüklərdən istifadə etməlisiniz ki, XML Xarici Varlıq (XXE) və zip-bomb hücumlarını bloklaya biləsiniz.</p>
<h2 id="baxın">Baxın</h2>
<ul>
<li><a href="https://blog.fileformat.com/presentation/powerpoint-file-formats/">FileFormat.com saytındakı təqdimat fayl formatları?</a></li>
<li><a href="https://blog.fileformat.com/presentation/apache-poi-api-to-access-powerpoint-file-formats/">PowerPoint fayl formatlarına daxil olmaq üçün Java API-si</a></li>
<li><a href="https://blog.fileformat.com/presentation/odp-vs-pptx-opendocument-vs-microsoft-powerpoint-format-comparison/">ODP vs PPTX: OpenDocument vs Microsoft PowerPoint təqdimat formatının müqayisəsi</a></li>
<li><a href="https://blog.fileformat.com/presentation/difference-between-ppt-and-pptx/">PPT və PPTX arasındakı fərq</a></li>
<li><a href="https://blog.fileformat.com/presentation/create-presentation-in-java-with-apache-poi-api/">Java ilə Apache POI API istifadə edərək PowerPoint təqdimatı yaradın</a></li>
</ul>
<!-- raw HTML omitted -->
]]></content:encoded>
    </item>
    
  </channel>
</rss>
