<?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/bn/tag/pptx-%E0%A6%B0%E0%A6%BF%E0%A6%AD%E0%A6%BE%E0%A6%B0%E0%A7%8D%E0%A6%B8-%E0%A6%87%E0%A6%9E%E0%A7%8D%E0%A6%9C%E0%A6%BF%E0%A6%A8%E0%A6%BF%E0%A6%AF%E0%A6%BC%E0%A6%BE%E0%A6%B0%E0%A6%BF%E0%A6%82/</link>
    <description>Recent content in PPTX রিভার্স ইঞ্জিনিয়ারিং on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>bn</language>
    <lastBuildDate>Wed, 16 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/bn/tag/pptx-%E0%A6%B0%E0%A6%BF%E0%A6%AD%E0%A6%BE%E0%A6%B0%E0%A7%8D%E0%A6%B8-%E0%A6%87%E0%A6%9E%E0%A7%8D%E0%A6%9C%E0%A6%BF%E0%A6%A8%E0%A6%BF%E0%A6%AF%E0%A6%BC%E0%A6%BE%E0%A6%B0%E0%A6%BF%E0%A6%82/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>PPTX রিভার্স ইঞ্জিনিয়ারিং: পাওয়ারপয়েন্ট ফাইলের অভ্যন্তরীণ গঠন বোঝা</title>
      <link>https://blog.fileformat.com/bn/presentation/pptx-reverse-engineering-understanding-powerpoint-files-internally/</link>
      <pubDate>Wed, 16 Sep 2026 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/bn/presentation/pptx-reverse-engineering-understanding-powerpoint-files-internally/</guid>
      <description>একটি `.pptx` ফাইলের ভিতরে আসলে কী আছে তা আবিষ্কার করুন। জানুন কীভাবে OpenXML প্যাকেজিং, রিলেশনশিপ গ্রাফ, শেপ এবং ড্রয়িং মার্কআপ কাজ করে।</description>
      <content:encoded><![CDATA[<p><strong>সর্বশেষ আপডেট</strong>: 16 সেপ্টেম্বর, 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="১-একট-pptx-ফইল-আসল-ক">১. একটি <code>.pptx</code> ফাইল আসলে কী?</h2>
<p>এর মূলত, একটি <code>.pptx</code> ফাইল প্রাচীন ১৯৯০-এর দশকের <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="২-পযকজর-গঠন-মল-উপপরণলসমহ">২. প্যাকেজের গঠন: মূল উপপ্রণালীসমূহ</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="_rels-সমপরক-গরফ"><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>: রঙের প্যালেট (অ্যাকসেন্ট ১ থেকে ৬, ডার্ক/লাইট ভ্যারিয়েশন) এবং ফন্ট স্কিম (মেজর/মাইনর ফন্ট)।</li>
<li><strong><code>media/</code></strong>: কাঁচা ইমেজ (PNG, JPEG, SVG), অডিও এবং ভিডিও ফাইল।</li>
</ul>
<h2 id="৩-সলইড-বশলষণ-পরজনটশনএমএল-p-ও-ডরযএমএল-a-উপভষ">৩. স্লাইড বিশ্লেষণ: প্রেজেন্টেশনএমএল (<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="গরতবপরণ-মপর-একক-emu-এব-পযনটর-শতকর-অশ">গুরুত্বপূর্ণ মাপের একক: EMU এবং পয়েন্টের শতকরা অংশ</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>ইংরেজি মেট্রিক ইউনিট (EMUs)</strong>।</p>
<ul>
<li>$1 \text{ inch} = 914,400 \text{ EMUs}$</li>
<li>$1 \text{ cm} = 360,000 \text{ EMUs}$</li>
<li>$1 \text{ pt} = 12,700 \text{ EMUs}$</li>
</ul>
<p>EMUs পূর্ণসংখ্যা ব্যবহার করে ইঞ্চি এবং মিলিমিটারের উভয়ই সঠিক ভগ্নাংশ উপস্থাপন করতে পারে, বিভিন্ন হার্ডওয়্যার আর্কিটেকচারে ফ্লোটিং-পয়েন্ট রাউন্ডিং ত্রুটি ছাড়া।</p>
<p>ফন্টের আকারটিও লক্ষ্য করুন:</p>
<ul>
<li><code>sz=&quot;3200&quot;</code> মানে <strong>32.00 pt</strong>। DrawingML-এ ফন্টের আকার পয়েন্টের শতকরা অংশে মাপা হয়।</li>
</ul>
<h2 id="৪-উততরধকর-চইন-কন-শপগল-অদশয-সটইল-উততরধকর-হয">৪. উত্তরাধিকার চেইন: কেন শেপগুলো অদৃশ্য স্টাইল উত্তরাধিকারী হয়</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="৫-বযবহরক-রভরস-ইঞজনযর-ওযরকফল">৫. ব্যবহারিক রিভার্স ইঞ্জিনিয়ারিং ওয়ার্কফ্লো</h2>
<p>যখন আপনাকে কোনো নির্দিষ্ট PowerPoint ফিচার কীভাবে কাজ করে তা (যেমন, মর্ফ ট্রানজিশন, জটিল টেবিল, ভেক্টর পাথ) তদন্ত করতে হবে, তখন এই প্রায়োগিক পদ্ধতি অনুসরণ করুন:</p>
<h3 id="ধপ-১-একট-নযনতম-ডফ-পযর-তর-করন">ধাপ ১: একটি ন্যূনতম &ldquo;ডিফ পেয়ার&rdquo; তৈরি করুন</h3>
<ol>
<li>PowerPoint খুলুন এবং একটি ফাঁকা স্লাইড তৈরি করুন।</li>
<li>এটি <code>before.pptx</code> নামে সংরক্ষণ করুন।</li>
<li>আপনি যে একক পরিবর্তনটি রিভার্স ইঞ্জিনিয়ার করতে চান তা প্রয়োগ করুন (যেমন, একটি বৃত্তে ড্রপ শ্যাডো যোগ করা, বুলেট স্টাইল পরিবর্তন করা, এমবেডেড ভিডিও সন্নিবেশ করা)।</li>
<li>এটি <code>after.pptx</code> নামে সংরক্ষণ করুন।</li>
</ol>
<h3 id="ধপ-২-উভয-আরকইভ-আনপযক-করন">ধাপ ২: উভয় আর্কাইভ আনপ্যাক করুন</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="ধপ-৩-xml-ফরমযট-করন">ধাপ ৩: 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="ধপ-৪-একট-ইউনফইড-ডফ-চলন">ধাপ ৪: একটি ইউনিফাইড ডিফ চালান</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="৬-কসটম-মইকর-ইঞজন-তর-আনপযক-পরবরতন-র-পযক">৬. কাস্টম মাইক্রো-ইঞ্জিন তৈরি: আনপ্যাক, পরিবর্তন, রি-প্যাক</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="র-বইট-সতর-ফইল-পরবরতন-করর-সময-মল-গটচ-গল">র&rsquo; বাইট স্তরে ফাইল পরিবর্তন করার সময় মূল গটচা গুলো:</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>: সর্বদা নিশ্চিত করুন যে আপনার zip বাফার সম্পূর্ণভাবে বন্ধ এবং ফ্লাশ হয়েছে ডাউনস্ট্রিমে বাইট পাঠানোর আগে।</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="৭-পরফরমযনস-ও-সকউরট-ববচন">৭. পারফরম্যান্স ও সিকিউরিটি বিবেচনা</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>, এবং বাহ্যিক নেটওয়ার্ক রেজোলিউশন নিষ্ক্রিয় করুন (উদাহরণস্বরূপ, পাইথনে <code>defusedxml</code> ব্যবহার করে)।</p>
<h3 id="নরপতত-মযকর-পলড-এব-লকন-সটরমস">নিরাপত্তা: ম্যাক্রো পেলোড এবং লুকানো স্ট্রিমস</h3>
<p>ফাইলগুলোতে <code>.pptx</code> এক্সটেনশনের নিচে লুকিয়ে থাকা <code>.pptm</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) ব্যবহার করে, যেখানে ১ ইঞ্চি সমান ৯১৪,৪০০ EMU এবং ১ পয়েন্ট সমান ১২,৭০০ EMU।</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) এবং zip‑bomb আক্রমণগুলো ব্লক করা যায়।</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>
