<?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>Programming on File Format Blog</title>
    <link>https://blog.fileformat.com/fa/categories/programming/</link>
    <description>Recent content in Programming on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>fa</language>
    <lastBuildDate>Tue, 10 Jun 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/fa/categories/programming/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>.h vs .hpp: تفاوت چیست و کدام را باید استفاده کنید؟</title>
      <link>https://blog.fileformat.com/fa/programming/h-vs-hpp/</link>
      <pubDate>Tue, 10 Jun 2025 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/fa/programming/h-vs-hpp/</guid>
      <description>در پروژه C&#43;&#43; خود تعجب می‌کنید که از .h یا .hpp استفاده کنید؟ تفاوت‌های کلیدی بین فایل‌های .h و .hpp، موارد استفاده آن‌ها و بهترین گزینه برای توسعه مدرن C&#43;&#43; را بیاموزید.</description>
      <content:encoded><![CDATA[<p><strong>آخرین به‌روزرسانی</strong>: 26 Feb, 2026</p>
<figure class="align-center ">
    <img loading="lazy" src="images/h-vs-hpp.webp#center"
         alt="عنوان - .h vs .hpp: تفاوت چیست و کدام را باید استفاده کنید؟"/> 
</figure>

<p>هنگام نوشتن برنامه‌های C++، به‌ویژه در پروژه‌های بزرگ، سازماندهی کد در چندین فایل برای خوانایی و نگهداری ضروری است. این معمولاً شامل استفاده از <strong>فایل‌های سرآیند</strong> می‌شود که با پسوندهای <a href="https://docs.fileformat.com/programming/h/"><code>.h</code></a> یا <a href="https://docs.fileformat.com/programming/hpp/"><code>.hpp</code></a> عرضه می‌شوند. اما تفاوت این دو چیست و کدام را باید استفاده کنید؟</p>
<p>در این مقاله، تفاوت‌های بین فایل‌های <a href="https://docs.fileformat.com/programming/h/"><code>.h</code></a> و <a href="https://docs.fileformat.com/programming/hpp/"><code>.hpp</code></a> را بررسی می‌کنیم، تاریخچه آن‌ها را مرور می‌کنیم و راهنمایی‌هایی برای بهترین روش‌ها ارائه می‌دهیم.</p>
<h2 id="درک-فایلهای-سرآیند-در-c">درک فایل‌های سرآیند در C++</h2>
<p>فایل‌های سرآیند شامل <strong>اعلان‌ها</strong> برای توابع، کلاس‌ها، ثابت‌ها و ماکروهایی هستند که می‌توانید آن‌ها را در چندین فایل منبع گنجانده (include) کنید. این فایل‌ها سپس در فایل‌های <a href="https://docs.fileformat.com/programming/cpp/"><code>.cpp</code></a> (منبع C++) با دستور <code>#include</code> گنجانده می‌شوند.</p>
<h3 id="محتویات-معمول-فایلهای-سرآیند">محتویات معمول فایل‌های سرآیند</h3>
<ul>
<li>تعریف کلاس‌ها</li>
<li>اعلان توابع</li>
<li>تعریف ثابت‌ها</li>
<li>ماکروها</li>
<li>قالب‌ها (در برخی موارد)</li>
</ul>
<h2 id="فایلهای-h">فایل‌های .h</h2>
<h3 id="فایل-h-چیست">فایل .h چیست؟</h3>
<p>فایل‌های <a href="https://docs.fileformat.com/programming/h/"><code>.h</code></a> فایل‌های سرآیند سنتی هستند و اولین بار به‌طور گسترده در زبان برنامه‌نویسی C استفاده شدند. آن‌ها هنوز هم در پروژه‌های C و C++ برای اعلان رابط‌ها به کار می‌روند.</p>
<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-cpp" data-lang="cpp"><span style="display:flex;"><span><span style="color:#75715e">// mathutils.h
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">#ifndef MATHUTILS_H
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define MATHUTILS_H
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">add</span>(<span style="color:#66d9ef">int</span> a, <span style="color:#66d9ef">int</span> b);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">subtract</span>(<span style="color:#66d9ef">int</span> a, <span style="color:#66d9ef">int</span> b);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#endif
</span></span></span></code></pre></div><h3 id="مزایا">مزایا:</h3>
<ul>
<li>به‌صورت جهانی شناخته شده (در هر دو C و C++ استفاده می‌شود).</li>
<li>مناسب برای پروژه‌هایی که شامل هر دو کد C و C++ هستند.</li>
</ul>
<h3 id="معایب">معایب:</h3>
<ul>
<li>می‌تواند در پروژه‌های C++ ابهام ایجاد کند که آیا فایل به سبک C است یا C++.</li>
</ul>
<h2 id="فایلهای-hpp">فایل‌های .hpp</h2>
<h3 id="فایل-hpp-چیست">فایل .hpp چیست؟</h3>
<p>فایل‌های <a href="https://docs.fileformat.com/programming/hpp/"><code>.hpp</code></a> فایل‌های سرآیند مختص C++ هستند. آن‌ها همانند فایل‌های <a href="https://docs.fileformat.com/programming/h/"><code>.h</code></a> عمل می‌کنند اما برای <strong>صریحاً نشان دادن</strong> این‌که سرآیند برای کد C++ است، استفاده می‌شوند.</p>
<h3 id="مثال-استفاده-1">مثال استفاده:</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-cpp" data-lang="cpp"><span style="display:flex;"><span><span style="color:#75715e">// vectorutils.hpp
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#75715e">#ifndef VECTORUTILS_HPP
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">#define VECTORUTILS_HPP
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;vector&gt;</span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>
</span></span><span style="display:flex;"><span>std<span style="color:#f92672">::</span>vector<span style="color:#f92672">&lt;</span><span style="color:#66d9ef">int</span><span style="color:#f92672">&gt;</span> filter_even(<span style="color:#66d9ef">const</span> std<span style="color:#f92672">::</span>vector<span style="color:#f92672">&lt;</span><span style="color:#66d9ef">int</span><span style="color:#f92672">&gt;&amp;</span> input);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#endif
</span></span></span></code></pre></div><h3 id="مزایا-1">مزایا:</h3>
<ul>
<li>به‌وضوح نشان می‌دهد که فایل برای کد C++ است.</li>
<li>از سردرگمی هنگام ترکیب C و C++ جلوگیری می‌کند.</li>
<li>در پروژه‌های چندزبانه یا تیم‌هایی که نام‌گذاری سخت‌گیرانه دارند، مفید است.</li>
</ul>
<h3 id="معایب-1">معایب:</h3>
<ul>
<li>کمی کمتر در کدهای قدیمی دیده می‌شود.</li>
<li>برخی سیستم‌های قدیمی که انتظار <code>.h</code> دارند، ممکن است آن را شناسایی نکنند.</li>
</ul>
<h2 id="h-در-مقابل-hpp-تفاوتهای-کلیدی">.h در مقابل .hpp: تفاوت‌های کلیدی</h2>
<table>
<thead>
<tr>
<th>ویژگی</th>
<th>فایل <code>.h</code></th>
<th>فایل <code>.hpp</code></th>
</tr>
</thead>
<tbody>
<tr>
<td>ارتباط زبانی</td>
<td>C و C++</td>
<td>فقط C++</td>
</tr>
<tr>
<td>قالب یا قانون؟</td>
<td>قالب</td>
<td>قالب</td>
</tr>
<tr>
<td>استفاده در پروژه‌های C++</td>
<td>رایج</td>
<td>ترجیح داده شده توسط برخی برای وضوح</td>
</tr>
<tr>
<td>پشتیبانی از قالب‌ها</td>
<td>بله</td>
<td>بله</td>
</tr>
<tr>
<td>ابهام کد</td>
<td>ممکن است در پروژه‌های چندزبانه وجود داشته باشد</td>
<td>کمتر محتمل</td>
</tr>
</tbody>
</table>
<h2 id="بهترین-روشها-برای-انتخاب-بین-h-و-hpp">بهترین روش‌ها برای انتخاب بین .h و .hpp</h2>
<p>در اینجا چند راهنمای کلی برای کمک به انتخاب شما آورده شده است:</p>
<h3 id="استفاده-از-h-اگر">استفاده از <code>.h</code> اگر:</h3>
<ul>
<li>کدی می‌نویسید که باید با هر دو C و C++ سازگار باشد.</li>
<li>در حال نگهداری یا گسترش کدهای قدیمی هستید که از <code>.h</code> استفاده می‌کنند.</li>
</ul>
<h3 id="استفاده-از-hpp-اگر">استفاده از <code>.hpp</code> اگر:</h3>
<ul>
<li>می‌خواهید واضح کنید که فایل مختص C++ است.</li>
<li>در پروژه‌ای فقط C++ کار می‌کنید یا از ویژگی‌های خاص C++ مانند کلاس‌ها، قالب‌ها و فضای‌نام‌ها استفاده می‌کنید.</li>
</ul>
<h2 id="ساختارهای-رایج-پروژه">ساختارهای رایج پروژه</h2>
<h3 id="مثال-با-h">مثال با <code>.h</code>:</h3>
<pre tabindex="0"><code>project/
├── main.cpp
├── mathutils.h
└── mathutils.cpp
</code></pre><h3 id="مثال-با-hpp">مثال با <code>.hpp</code>:</h3>
<pre tabindex="0"><code>project/
├── main.cpp
├── vectorutils.hpp
└── vectorutils.cpp
</code></pre><p>هر دو ساختار معتبر هستند؛ تفاوت عمدتاً در وضوح و ترجیحات تیمی است.</p>
<h2 id="نتیجهگیری">نتیجه‌گیری</h2>
<p>انتخاب بین <code>.h</code> و <code>.hpp</code> بیشتر به <strong>قالب</strong> مربوط می‌شود تا عملکرد. هر دو هدف یکسانی دارند: اعلان رابط‌ها و کدهای مشترک بین چندین فایل منبع C++.</p>
<p>با این حال، برای کدهای مختص C++ استفاده از <code>.hpp</code> می‌تواند نیت شما را واضح‌تر کند و از سردرگمی در کدبیس‌های بزرگتر—به‌ویژه آن‌هایی که شامل چندین زبان هستند—پیشگیری کند. برای پروژه‌های ترکیبی یا قدیمی، ممکن است هنوز <code>.h</code> مناسب باشد.</p>
<h3 id="نکته-کلیدی">نکته کلیدی:</h3>
<blockquote>
<p>وقتی می‌خواهید نشان دهید «این فقط کد C++ است» از <code>.hpp</code> استفاده کنید — اگر در محیط‌هایی کار می‌کنید که C و C++ را ترکیب می‌کنند، با <code>.h</code> ادامه دهید.</p>
</blockquote>
<h2 id="مطالب-مرتبط">مطالب مرتبط</h2>
<ul>
<li><a href="https://blog.fileformat.com/word-processing/doc-vs-docx/">تفاوت بین DOC و DOCX</a></li>
<li><a href="https://blog.fileformat.com/video/avi-format-what-is-avi-format-avi-vs-mp4/">فرمت AVI: آیا باید از AVI استفاده کنید؟ - AVI در مقابل MP4</a></li>
<li><a href="https://blog.fileformat.com/audio/wav-vs-mp3/">WAV در مقابل MP3 برای پادکسترها: تفاوت چیست؟</a></li>
</ul>
]]></content:encoded>
    </item>
    
    <item>
      <title>چگونه فایل‌های XML را در پایتون، جاوا و جاوااسکریپت بخوانیم و ویرایش کنیم</title>
      <link>https://blog.fileformat.com/fa/programming/how-to-read-and-edit-xml-files-in-python-java-and-javascript/</link>
      <pubDate>Thu, 20 Mar 2025 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/fa/programming/how-to-read-and-edit-xml-files-in-python-java-and-javascript/</guid>
      <description>یاد بگیرید چگونه فایل‌های XML را به‌صورت کارآمد بخوانید و ویرایش کنید، چه تازه‌کار باشید چه یک توسعه‌دهنده باتجربه. روش‌های پایه و پیشرفته برای کار با داده‌های XML را کاوش کنید.</description>
      <content:encoded><![CDATA[<p><strong>آخرین به‌روزرسانی</strong>: ۲۵ مارس ۲۰۲۵</p>
<figure class="align-center ">
    <img loading="lazy" src="images/how-to-read-and-edit-xml-files-in-python-java-and-javascript.webp#center"
         alt="عنوان - چگونه فایل‌های XML را در پایتون، جاوا و جاوااسکریپت بخوانیم و ویرایش کنیم"/> 
</figure>

<p><a href="https://docs.fileformat.com/web/xml/">XML (زبان نشانه‌گذاری قابل توسعه)</a> به طور گسترده برای ذخیره‌سازی و حمل و نقل داده‌ها استفاده می‌شود. چه تازه‌کار باشید و چه یک برنامه‌نویس باتجربه، درک نحوه خواندن و ویرایش فایل‌های XML ضروری است. در این راهنما، روش‌های پایه و پیشرفته برای کار با فایل‌های XML به صورت کارآمد را پوشش می‌دهیم.</p>
<h2 id="فهم-ساختار-xml">فهم ساختار XML</h2>
<p>یک فایل XML شامل عناصر، خصوصیات و داده‌های سلسله‌مراتبی است. در اینجا یک مثال ساده از XML آمده است:</p>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/271406a7ab104857883df6eba2bea5f3.js?file=simple-xml-file.xml"></script>

<h2 id="خواندن-فایلهای-xml">خواندن فایل‌های XML</h2>
<h3 id="۱-استفاده-از-پایتون">۱. استفاده از پایتون</h3>
<p>ماژول <code>xml.etree.ElementTree</code> در پایتون امکان تحلیل آسان XML را فراهم می‌کند.</p>
<blockquote>
<p>ماژول <code>xml.etree.ElementTree</code> یک ماژول داخلی در پایتون است که نیازی به نصب جداگانه ندارد. این ماژول به صورت پیش‌فرض با پایتون نصب می‌شود و ابزارهای سهلی برای تحلیل، ویرایش و ایجاد داده‌های XML فراهم می‌کند.</p>
</blockquote>
<h4 id="توضیح-کد">توضیح کد</h4>
<p>این اسکریپت پایتون از <code>xml.etree.ElementTree</code> برای تحلیل فایل XML (<code>books.xml</code>) استفاده می‌کند. تمامی عناصر <code>&lt;book&gt;</code> را بازیابی کرده، مقادیر <code>&lt;title&gt;</code>, <code>&lt;author&gt;</code> و <code>&lt;price&gt;</code> آن‌ها را استخراج و چاپ می‌کند. این روش خواندن داده‌های ساختاری XML را آسان می‌سازد.</p>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/416bcf5486a1a3b9847565f60ecbeadb.js?file=read-xml-file.py"></script>

<h3 id="۲-استفاده-از-جاوا">۲. استفاده از جاوا</h3>
<p>جاوا بسته <code>javax.xml.parsers</code> برای کار با XML فراهم می‌کند.</p>
<blockquote>
<p>بسته <code>javax.xml.parsers</code> یک بسته داخلی در جاوا است که کلاس‌هایی برای تحلیل XML با استفاده از <strong>DOM (مدل شیء‌گرای سند) و SAX (رابط کاربری ساده برای XML)</strong> ارائه می‌دهد. این بسته در کتابخانه استاندارد جاوا وجود دارد، بنابراین نیازی به نصب هیچ چیز اضافی برای استفاده از آن نیست.</p>
</blockquote>
<h4 id="توضیح-کد-1">توضیح کد</h4>
<p>این برنامه جاوا از تحلیل‌گر DOM برای خواندن و تحلیل فایل XML (<code>books.xml</code>) استفاده می‌کند. ابتدا سند XML را بارگذاری و نرمال‌سازی کرده، سپس تمامی عناصر <code>&lt;book&gt;</code> را بازیابی می‌کند. داخل یک حلقه، محتوای متنی هر تگ <code>&lt;title&gt;</code> را استخراج و چاپ می‌کند. این امر امکان خواندن عناوین کتاب‌ها از یک فایل XML را به صورت سریع فراهم می‌آورد.</p>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/14250f23a2429fae62a206ef739d589c.js?file=read-xml-file.java"></script>

<h3 id="۳-استفاده-از-جاوااسکریپت-مرورگر">۳. استفاده از جاوااسکریپت (مرورگر)</h3>
<p><code>DOMParser</code> جاوااسکریپت می‌تواند XML را تحلیل کند.</p>
<blockquote>
<p><code>DOMParser</code> جاوااسکریپت یک قابلیت داخلی در مرورگرهای وب مدرن است. این قابلیت به شما امکان می‌دهد رشته‌های XML را به یک <strong>مدل شیء‌گرای سند (DOM)</strong> تبدیل کنید که به آسانی می‌توان آن را با جاوااسکریپت مسیریابی و ویرایش کرد.</p>
</blockquote>
<h4 id="توضیح-کد-2">توضیح کد</h4>
<p>این کد جاوااسکریپت از <code>DOMParser</code> برای تحلیل یک رشته XML (<code>xmlString</code>) استفاده می‌کند. عنصر <code>&lt;title&gt;</code> را از سند XML تحلیل‌شده استخراج کرده و محتوای متنی آن (<code>&quot;XML Guide&quot;</code>) را بر روی کنسول ثبت می‌کند. این ویژگی برای پردازش داده‌های XML در جاوااسکریپت مفید است.</p>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/5b2951af386b289aced3bf19d58e895d.js?file=read-xml-file.js"></script>

<h2 id="ویرایش-فایلهای-xml">ویرایش فایل‌های XML</h2>
<h3 id="۱-ویرایش-با-پایتون">۱. ویرایش با پایتون</h3>
<p>این اسکریپت پایتون از <code>xml.etree.ElementTree</code> برای تحلیل و ویرایش یک فایل XML (<code>books.xml</code>) استفاده می‌کند. یک عنصر <code>&lt;book&gt;</code> با <code>id</code> برابر <code>&quot;1&quot;</code> پیدا کرده و مقدار <code>&lt;price&gt;</code> آن را به <code>&quot;24.99&quot;</code> تغییر می‌دهد، سپس تغییرات را در فایل ذخیره می‌کند.</p>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/f66e37ce143dcf8da9aab3075f8d36b5.js?file=edit-xml-file.py"></script>

<h3 id="۲-ویرایش-با-جاوا">۲. ویرایش با جاوا</h3>
<p>این برنامه جاوا یک فایل XML (<code>books.xml</code>) را با استفاده از تحلیل‌گر DOM ویرایش می‌کند. سند را بارگذاری و نرمال‌سازی کرده، عنصر <code>&lt;book&gt;</code> با <code>id=&quot;1&quot;</code> را پیدا کرده، مقدار <code>&lt;price&gt;</code> آن را به <code>&quot;24.99&quot;</code> تغییر می‌دهد و با استفاده از <code>Transformer</code> تغییرات را در فایل ذخیره می‌کند.</p>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/23cb6488f17c312ddb1698c90a96741f.js?file=edit-xml-file.java"></script>

<h3 id="۳-ویرایش-با-جاوااسکریپت">۳. ویرایش با جاوااسکریپت</h3>
<p>این کد جاوااسکریپت یک رشته XML را با <code>DOMParser</code> تحلیل کرده، عنصر <code>&lt;book&gt;</code> با <code>id=&quot;1&quot;</code> را پیدا کرده، مقدار <code>&lt;price&gt;</code> آن را به <code>&quot;24.99&quot;</code> تغییر داده و سپس XML ویرایش‌شده را با <code>XMLSerializer</code> به رشته تبدیل می‌کند. در نهایت، XML به‌روزشده را ثبت می‌کند.</p>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/b24e6e973f62cdfc96dd81f7bb622b67.js?file=edit-xml-file.js"></script>

<h2 id="نتیجهگیری">نتیجه‌گیری</h2>
<p>خواندن و ویرایش فایل‌های XML برای برنامه‌نویسانی که با داده‌های ساختاری کار می‌کنند بسیار مهم است. پایتون، جاوا و جاوااسکریپت روش‌های قدرتمندی برای پردازش XML به‌صورت کارآمد ارائه می‌دهند. این تکنیک‌ها را امتحان کنید و مهارت‌های خود در کار با XML را بهبود بخشید!</p>
]]></content:encoded>
    </item>
    
    <item>
      <title>کار با فایل‌های PDF در پایتون</title>
      <link>https://blog.fileformat.com/fa/programming/working-with-pdf-files-in-python/</link>
      <pubDate>Wed, 29 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/fa/programming/working-with-pdf-files-in-python/</guid>
      <description>یاد بگیرید که چگونه متن را از یک PDF در پایتون استخراج کنید، صفحات PDF را بچرخانید، چندین PDF را ادغام کنید، PDF ها را تقسیم کنید و به PDF های خود با استفاده از کتابخانه‌های پایتون و نمونه‌های کد ساده، واترمارک اضافه کنید.</description>
      <content:encoded><![CDATA[<p><strong>آخرین به‌روزرسانی</strong>: ۲۹ ژانویه ۲۰۲۵</p>
<figure class="align-center ">
    <img loading="lazy" src="images/working-with-pdf-files-in-python.png#center"
         alt="عنوان - کار با فایل‌های PDF در پایتون"/> 
</figure>

<p>در این مقاله، راهنمایی می‌کنیم که <strong>چگونه با فایل‌های PDF با استفاده از پایتون کار کنید</strong>. برای این کار، از کتابخانه <a href="https://pypi.org/project/pypdf/"><strong>pypdf</strong></a> استفاده خواهیم کرد.</p>
<p>با استفاده از کتابخانه <strong>pypdf</strong>، عملیات‌های زیر را در پایتون نشان خواهیم داد:</p>
<ul>
<li>استخراج متن از PDF</li>
<li>چرخاندن صفحات PDF</li>
<li>ادغام چندین PDF</li>
<li>تقسیم PDF‌ها به فایل‌های مجزا</li>
<li>افزودن واترمارک به صفحات PDF</li>
</ul>
<p><em><strong>توجه</strong>: این مقاله شامل جزئیات ارزشمندی است، بنابراین در صورت نیاز به قسمت‌های مورد علاقه‌تان مستقیماً بروید! محتوا به گونه‌ای سازماندهی شده است که بتوانید به راحتی بر روی مواردی که برای شما مهم‌ترین است تمرکز کنید.</em></p>
<figure class="align-center ">
    <img loading="lazy" src="images/pdf-manipulation-with-pypdf.webp#center"
         alt="تصویر - کار با فایل‌های PDF در پایتون"/> 
</figure>

<h2 id="کدهای-نمونه">کدهای نمونه</h2>
<p>شما می‌توانید تمام کدهای نمونه استفاده شده در این مقاله را از لینک زیر دانلود کنید. این شامل کدها، فایل‌های ورودی، و فایل‌های خروجی است.</p>
<ul>
<li><a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python">مثال‌های کد و فایل‌های ورودی برای کار با فایل‌های PDF در پایتون</a></li>
</ul>
<h2 id="نصب-pypdf">نصب pypdf</h2>
<p>برای نصب pypdf، کافی است دستور زیر را در ترمینال یا کامند پرامپت خود اجرا کنید:</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>pip install pypdf
</span></span></code></pre></div><p><strong>توجه:</strong> دستور بالا به حروف بزرگ و کوچک حساس است.</p>
<h2 id="۱-استخراج-متن-از-یک-فایل-pdf-با-استفاده-از-پایتون">۱. استخراج متن از یک فایل PDF با استفاده از پایتون</h2>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/e2b43a49dbad9e89745f8f9777817acb.js?file=extract-text-from-pdf-using-pypdf-in-python.py"></script>

<h3 id="توضیح-کد"><strong>توضیح کد</strong></h3>
<p><strong>۱. ایجاد یک شیء خواننده PDF</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-python" data-lang="python"><span style="display:flex;"><span>reader <span style="color:#f92672">=</span> PdfReader(pdf_file)
</span></span></code></pre></div><ul>
<li><code>PdfReader(pdf_file)</code> فایل PDF را به یک <strong>شیء خواننده</strong> بارگذاری می‌کند.</li>
<li>این شیء امکان دسترسی به صفحات و محتوای آنان را فراهم می‌کند.</li>
</ul>
<p><strong>۲. حلقه زدن بر روی صفحات</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-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">for</span> page_number, page <span style="color:#f92672">in</span> enumerate(reader<span style="color:#f92672">.</span>pages, start<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>):
</span></span></code></pre></div><ul>
<li><code>reader.pages</code> لیستی از صفحات در فایل PDF بر می‌گرداند.</li>
<li><code>enumerate(..., start=1)</code> یک <strong>شماره صفحه از ۱ به بالا</strong> اختصاص می‌دهد.</li>
</ul>
<p><strong>۳. چاپ متن استخراج شده</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-python" data-lang="python"><span style="display:flex;"><span>    print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Page </span><span style="color:#e6db74">{</span>page_number<span style="color:#e6db74">}</span><span style="color:#e6db74">:&#34;</span>)
</span></span><span style="display:flex;"><span>    print(page<span style="color:#f92672">.</span>extract_text())
</span></span><span style="display:flex;"><span>    print(<span style="color:#e6db74">&#34;-&#34;</span> <span style="color:#f92672">*</span> <span style="color:#ae81ff">50</span>)  <span style="color:#75715e"># جداکننده برای خوانایی</span>
</span></span></code></pre></div><ul>
<li><code>page.extract_text()</code> محتویات متنی را از صفحه جاری استخراج می‌کند.</li>
<li>اسکریپت متن استخراج شده را به همراه <strong>شماره صفحه</strong> چاپ می‌کند.</li>
<li><code>&quot;-&quot; * 50</code> یک خط جداکننده (<code>--------------------------------------------------</code>) برای خوانایی بهتر چاپ می‌کند.</li>
</ul>
<h3 id="فایل-pdf-ورودی-استفاده-شده-در-کد">فایل PDF ورودی استفاده شده در کد</h3>
<ul>
<li><strong>فایل ورودی:</strong> <a href="https://github.com/fileformat-blog-gists/code/blob/main/working-with-pdf-files-in-python/pdf-to-extract-text/">لینک دانلود</a></li>
</ul>
<h3 id="خروجی-کد">خروجی کد</h3>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/ab6976aa3a0fc2999093f5f9320a9e20.js?file=Output%20-%20extract-text-from-pdf-using-pypdf-in-python.txt"></script>

<h2 id="۲-چرخاندن-صفحات-pdf-با-استفاده-از-پایتون">۲. چرخاندن صفحات PDF با استفاده از پایتون</h2>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/760d480cfede4178296c353d60662e1a.js?file=rotate-pdf-page-using-pypdf-in-python.py"></script>

<h3 id="توضیح-کد-1">توضیح کد</h3>
<p>کد اساساً <strong>اولین صفحه</strong> را به <strong>۹۰ درجه در جهت موافق ساعت</strong> می‌چرخاند و فایل PDF تغییر یافته را بدون تاثیر بر روی سایر صفحات ذخیره می‌کند.</p>
<p><strong>۱. وارد کردن کلاس‌های مورد نیاز</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-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> pypdf <span style="color:#f92672">import</span> PdfReader, PdfWriter
</span></span></code></pre></div><ul>
<li><code>PdfReader</code>: فایل PDF ورودی را می‌خواند.</li>
<li><code>PdfWriter</code>: یک PDF جدید با تغییرات ایجاد می‌کند.</li>
</ul>
<p><strong>۲. تعریف مسیر فایل‌های ورودی و خروجی</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-python" data-lang="python"><span style="display:flex;"><span>input_pdf <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;pdf-to-rotate/input.pdf&#34;</span>
</span></span><span style="display:flex;"><span>output_pdf <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;pdf-to-rotate/rotated_output.pdf&#34;</span>
</span></span></code></pre></div><ul>
<li>اسکریپت از <code>input.pdf</code> می‌خواند و فایل تغییر یافته را به عنوان <code>rotated_output.pdf</code> ذخیره می‌کند.</li>
</ul>
<p><strong>۳. خواندن PDF و ایجاد یک شیء نویسنده</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-python" data-lang="python"><span style="display:flex;"><span>reader <span style="color:#f92672">=</span> PdfReader(input_pdf)
</span></span><span style="display:flex;"><span>writer <span style="color:#f92672">=</span> PdfWriter()
</span></span></code></pre></div><ul>
<li><code>reader</code> فایل PDF موجود را بارگذاری می‌کند.</li>
<li><code>writer</code> برای ذخیره صفحات تغییر یافته استفاده می‌شود.</li>
</ul>
<p><strong>۴. چرخاندن اولین صفحه به اندازه ۹۰ درجه</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-python" data-lang="python"><span style="display:flex;"><span>page <span style="color:#f92672">=</span> reader<span style="color:#f92672">.</span>pages[<span style="color:#ae81ff">0</span>]
</span></span><span style="display:flex;"><span>page<span style="color:#f92672">.</span>rotate(<span style="color:#ae81ff">90</span>)  <span style="color:#75715e"># چرخش ۹۰ درجه در جهت موافق ساعت</span>
</span></span><span style="display:flex;"><span>writer<span style="color:#f92672">.</span>add_page(page)
</span></span></code></pre></div><ul>
<li><strong>صفحه ۱</strong> را استخراج می‌کند، به اندازه <strong>۹۰ درجه</strong> می‌چرخاند و آن را به PDF جدید اضافه می‌کند.</li>
</ul>
<p><strong>۵. اضافه کردن صفحات باقی‌مانده بدون تغییر</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-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">for</span> i <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">1</span>, len(reader<span style="color:#f92672">.</span>pages)):
</span></span><span style="display:flex;"><span>    writer<span style="color:#f92672">.</span>add_page(reader<span style="color:#f92672">.</span>pages[i])
</span></span></code></pre></div><ul>
<li>بر روی سایر صفحات حلقه می‌زند و آنان را به همان صورت اضافه می‌کند.</li>
</ul>
<p><strong>۶. ذخیره PDF جدید</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-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">with</span> open(output_pdf, <span style="color:#e6db74">&#34;wb&#34;</span>) <span style="color:#66d9ef">as</span> file:
</span></span><span style="display:flex;"><span>    writer<span style="color:#f92672">.</span>write(file)
</span></span></code></pre></div><ul>
<li><code>rotated_output.pdf</code> را در حالت نوشتن باینری باز می‌کند و PDF جدید را ذخیره می‌کند.</li>
</ul>
<p><strong>۷. چاپ تاییدیه</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-python" data-lang="python"><span style="display:flex;"><span>print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Rotated page saved to </span><span style="color:#e6db74">{</span>output_pdf<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
</span></span></code></pre></div><ul>
<li>پیامی به منظور موفقیت‌آمیز بودن نمایش می‌دهد.</li>
</ul>
<h3 id="فایل-pdf-ورودی-استفاده-شده-در-کد-و-خروجی-چرخانده-شده">فایل PDF ورودی استفاده شده در کد و خروجی چرخانده شده</h3>
<ul>
<li><strong>فایل PDF ورودی:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-rotate/">لینک دانلود</a></li>
<li><strong>فایل PDF خروجی چرخانده شده:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-rotate/rotated_output.pdf">لینک دانلود</a></li>
</ul>
<p><strong>تصویر</strong>
<img loading="lazy" src="https://raw.githubusercontent.com/fileformat-blog-gists/content/main/working-with-pdf-files-in-python/rotated-pdf.png" alt="تصویر صفحه چرخانده شده در PDF با استفاده از پایتون"  />
</p>
<h2 id="۳-ادغام-فایلهای-pdf-با-استفاده-از-پایتون">۳. ادغام فایل‌های PDF با استفاده از پایتون</h2>
<p>این اسکریپت پایتون نحوه <strong>ادغام چندین فایل PDF</strong> از یک دایرکتوری را در یک PDF واحد با استفاده از کتابخانه <strong>PyPDF</strong> نشان می‌دهد.</p>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/a1a571783e0f5e699678d1094bf1afa5.js?file=merge_pdf_files_using_pypdf_in_python.py"></script>

<h3 id="توضیح-کد-2">توضیح کد</h3>
<ul>
<li>این اسکریپت تمام فایل‌های PDF موجود در دایرکتوری مشخص شده (<code>pdfs-to-merge</code>) را به طور خودکار ادغام و به یک فایل خروجی واحد (<code>merged_output.pdf</code>) ذخیره می‌کند.</li>
<li>مطمئن می‌شود دایرکتوری خروجی موجود است و صفحات هر PDF را به ترتیب لیست‌شده اضافه می‌کند.</li>
<li>فایل نهایی ادغام شده را در زیرپوشه <code>output-dir</code> خروجی می‌دهد.</li>
</ul>
<p><strong>جزئیات کد</strong></p>
<p><strong>۱. وارد کردن کتابخانه‌ها</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-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> os
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> pypdf <span style="color:#f92672">import</span> PdfReader, PdfWriter
</span></span></code></pre></div><ul>
<li><code>os</code>: برای تعامل با سیستم فایل استفاده می‌شود، مانند خواندن دایرکتوری‌ها و مدیریت مسیرهای فایل.</li>
<li><code>PdfReader</code>: محتوای یک فایل PDF را می‌خواند.</li>
<li><code>PdfWriter</code>: یک فایل PDF جدید ایجاد و می‌نویسد.</li>
</ul>
<p><strong>۲. تعریف دایرکتوری و فایل خروجی</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-python" data-lang="python"><span style="display:flex;"><span>directory <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;pdfs-to-merge&#34;</span>
</span></span><span style="display:flex;"><span>output_file <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;output-dir/merged_output.pdf&#34;</span>
</span></span></code></pre></div><ul>
<li><code>directory</code>: پوشه‌ای که فایل‌های PDF در آن ذخیره شده‌اند را مشخص می‌کند.</li>
<li><code>output_file</code>: مسیر خروجی و نام فایل PDF ادغام شده را تعریف می‌کند.</li>
</ul>
<p><strong>۳. ایجاد دایرکتوری خروجی در صورت عدم وجود</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-python" data-lang="python"><span style="display:flex;"><span>os<span style="color:#f92672">.</span>makedirs(os<span style="color:#f92672">.</span>path<span style="color:#f92672">.</span>join(directory, <span style="color:#e6db74">&#34;output-dir&#34;</span>), exist_ok<span style="color:#f92672">=</span><span style="color:#66d9ef">True</span>)
</span></span></code></pre></div><ul>
<li>اطمینان می‌دهد که <strong>دایرکتوری خروجی</strong> موجود است و در صورت عدم وجود آن، آن را ایجاد می‌کند.</li>
</ul>
<p><strong>۴. ایجاد یک شیء PdfWriter</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-python" data-lang="python"><span style="display:flex;"><span>writer <span style="color:#f92672">=</span> PdfWriter()
</span></span></code></pre></div><ul>
<li><code>writer</code> برای جمع‌آوری و ترکیب تمام صفحات از فایل‌های PDF استفاده می‌شود.</li>
</ul>
<p><strong>۵. تکرار بر روی تمام فایل‌های PDF در داخل دایرکتوری</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-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">for</span> file_name <span style="color:#f92672">in</span> sorted(os<span style="color:#f92672">.</span>listdir(directory)):
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> file_name<span style="color:#f92672">.</span>endswith(<span style="color:#e6db74">&#34;.pdf&#34;</span>):
</span></span><span style="display:flex;"><span>        file_path <span style="color:#f92672">=</span> os<span style="color:#f92672">.</span>path<span style="color:#f92672">.</span>join(directory, file_name)
</span></span><span style="display:flex;"><span>        print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Adding: </span><span style="color:#e6db74">{</span>file_name<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
</span></span></code></pre></div><ul>
<li>این حلقه تمام فایل‌ها در دایرکتوری مشخص‌شده را بررسی و به دنبال فایل‌هایی با پسوند <code>.pdf</code> می‌گردد. از <code>sorted()</code> برای پردازش آن‌ها به ترتیب حروف الفبا استفاده می‌کند.</li>
</ul>
<p><strong>۶. خواندن هر PDF و اضافه کردن صفحات به نویسنده</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-python" data-lang="python"><span style="display:flex;"><span>reader <span style="color:#f92672">=</span> PdfReader(file_path)
</span></span><span style="display:flex;"><span>writer<span style="color:#f92672">.</span>append(reader)
</span></span></code></pre></div><ul>
<li>برای هر PDF، <code>PdfReader</code> فایل را خوانده و سپس تمام صفحات آن PDF به <code>writer</code> اضافه می‌شوند.</li>
</ul>
<p><strong>۷. نوشتن فایل PDF ادغام شده به یک فایل خروجی</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-python" data-lang="python"><span style="display:flex;"><span>output_path <span style="color:#f92672">=</span> os<span style="color:#f92672">.</span>path<span style="color:#f92672">.</span>join(directory, output_file)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">with</span> open(output_path, <span style="color:#e6db74">&#34;wb&#34;</span>) <span style="color:#66d9ef">as</span> output_pdf:
</span></span><span style="display:flex;"><span>    writer<span style="color:#f92672">.</span>write(output_pdf)
</span></span></code></pre></div><ul>
<li>پس از جمع‌آوری تمام صفحات، <code>writer.write()</code> PDF ادغام شده را به مسیر خروجی مشخص‌شده می‌نویسد.</li>
</ul>
<p><strong>۸. چاپ تأییدیه</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-python" data-lang="python"><span style="display:flex;"><span>print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Merged PDF saved as: </span><span style="color:#e6db74">{</span>output_path<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
</span></span></code></pre></div><ul>
<li>یک پیام موفقیت‌آمیز برای تایید مکان ذخیره شده فایل PDF ادغام شده نمایش می‌دهد.</li>
</ul>
<h3 id="فایلهای-pdf-ورودی-استفاده-شده-در-کد-و-فایل-pdf-خروجی-ادغام-شده">فایل‌های PDF ورودی استفاده شده در کد و فایل PDF خروجی ادغام شده</h3>
<ul>
<li><strong>فایل‌های PDF ورودی:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdfs-to-merge">لینک دانلود</a></li>
<li><strong>فایل PDF خروجی ادغام شده:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdfs-to-merge/output-dir">لینک دانلود</a></li>
</ul>
<h2 id="۴-تقسیم-یک-pdf-با-استفاده-از-پایتون">۴. تقسیم یک PDF با استفاده از پایتون</h2>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/0dee64422ac0dcf44cf027d90567bbf8.js?file=split-pdf-using-pypdf-in-python.py"></script>

<h3 id="توضیح-کد-3">توضیح کد</h3>
<p>اسکریپت پایتون بالا یک فایل PDF را با استفاده از کتابخانه <strong>PyPDF</strong> به صفحات جداگانه تقسیم می‌کند. ابتدا مطمئن می‌شود که دایرکتوری خروجی وجود دارد، سپس فایل PDF ورودی را می‌خواند. اسکریپت برای هر صفحه یک شیء <strong>PdfWriter</strong> جدید ایجاد کرده و هر صفحه را به عنوان یک فایل PDF مجزا ذخیره می‌کند. فایل‌های خروجی به ترتیب نامگذاری شده‌اند (مثلاً <strong>page_1.pdf, page_2.pdf</strong>) و در پوشه <strong><code>output-dir</code></strong> ذخیره می‌شوند. در نهایت، یک پیام تایید برای هر فایل ایجاد شده نمایش می‌دهد و فرآیند را تکمیل می‌کند.</p>
<h3 id="فایل-pdf-ورودی-و-فایلهای-خروجی-تقسیمشده">فایل PDF ورودی و فایل‌های خروجی تقسیم‌شده</h3>
<ul>
<li><strong>فایل PDF ورودی:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-split">لینک دانلود</a></li>
<li><strong>فایل‌های خروجی تقسیم‌شده:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-split/output-dir">لینک دانلود</a></li>
</ul>
<h2 id="۵-افزودن-واترمارک-به-یک-فایل-pdf-با-استفاده-از-پایتون">۵. افزودن واترمارک به یک فایل PDF با استفاده از پایتون</h2>
<p>می‌توانید با استفاده از کتابخانه PyPDF واترمارک را به یک PDF اضافه کنید، به طوری که یک PDF واترمارک روی یک PDF موجود قرار گیرد. اطمینان حاصل کنید که PDF واترمارک دارای تنها یک صفحه باشد تا به درستی بر روی هر صفحه از PDF اصلی اعمال شود.</p>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/af057943580e2fcde6a635df34d7e39a.js?file=watermark-pdf-using-pypdf-in-python.py"></script>

<h3 id="توضیح-کد-4">توضیح کد</h3>
<p>اسکریپت پایتون بالا یک فایل PDF ورودی را می‌خواند، یک فایل PDF واترمارک تک صفحه‌ای را استخراج می‌کند، واترمارک را بر روی هر صفحه از فایل PDF ورودی اعمال می‌کند و فایل PDF خروجی که حاوی واترمارک است را ذخیره می‌کند.</p>
<p><strong>جزئیات کد</strong></p>
<p>در اینجا توضیح مختصری در مورد هر قسمت آورده شده است</p>
<p><strong>۱. وارد کردن کلاس‌های مورد نیاز</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-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> pypdf <span style="color:#f92672">import</span> PdfReader, PdfWriter
</span></span></code></pre></div><ul>
<li><strong><code>PdfReader</code></strong> برای خواندن فایل‌های PDF موجود استفاده می‌شود.</li>
<li><strong><code>PdfWriter</code></strong> برای ایجاد و نوشتن یک فایل PDF جدید استفاده می‌شود.</li>
</ul>
<p><strong>۲. تعریف مسیر فایل‌ها</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-python" data-lang="python"><span style="display:flex;"><span>input_pdf <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;pdf-to-watermark/input.pdf&#34;</span>
</span></span><span style="display:flex;"><span>watermark_pdf <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;pdf-to-watermark/watermark.pdf&#34;</span>
</span></span><span style="display:flex;"><span>output_pdf <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;pdf-to-watermark/output_with_watermark.pdf&#34;</span>
</span></span></code></pre></div><ul>
<li><code>input_pdf</code>: فایل PDF اصلی که قرار است واترمارک به آن اضافه شود.</li>
<li><code>watermark_pdf</code>: یک PDF <strong>تک صفحه‌ای</strong> جداگانه که به عنوان واترمارک عمل می‌کند.</li>
<li><code>output_pdf</code>: فایل خروجی که حاوی صفحات دارای واترمارک خواهد بود.</li>
</ul>
<p><strong>۳. خواندن فایل‌های PDF</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-python" data-lang="python"><span style="display:flex;"><span>reader <span style="color:#f92672">=</span> PdfReader(input_pdf)
</span></span><span style="display:flex;"><span>watermark <span style="color:#f92672">=</span> PdfReader(watermark_pdf)
</span></span></code></pre></div><ul>
<li><code>reader</code>: فایل PDF ورودی را می‌خواند.</li>
<li><code>watermark</code>: فایل PDF واترمارک را می‌خواند.</li>
</ul>
<p><strong>۴. ایجاد یک شیء نویسنده</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-python" data-lang="python"><span style="display:flex;"><span>writer <span style="color:#f92672">=</span> PdfWriter()
</span></span></code></pre></div><ul>
<li>این برای ایجاد فایل نهایی حاوی واترمارک استفاده خواهد شد.</li>
</ul>
<p><strong>۵. استخراج صفحه واترمارک</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-python" data-lang="python"><span style="display:flex;"><span>watermark_page <span style="color:#f92672">=</span> watermark<span style="color:#f92672">.</span>pages[<span style="color:#ae81ff">0</span>]
</span></span></code></pre></div><ul>
<li>فرض می‌کند که فایل PDF واترمارک تنها <strong>یک صفحه</strong> دارد که برای قرارگیری بر روی تمام صفحات استفاده می‌شود.</li>
</ul>
<p><strong>۶. حلقه بر روی صفحات فایل PDF ورودی و ادغام واترمارک</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-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">for</span> page <span style="color:#f92672">in</span> reader<span style="color:#f92672">.</span>pages:
</span></span><span style="display:flex;"><span>    <span style="color:#75715e"># ادغام واترمارک با صفحه جاری</span>
</span></span><span style="display:flex;"><span>    page<span style="color:#f92672">.</span>merge_page(watermark_page)
</span></span><span style="display:flex;"><span>    
</span></span><span style="display:flex;"><span>    <span style="color:#75715e"># اضافه کردن صفحه ادغام شده به نویسنده</span>
</span></span><span style="display:flex;"><span>    writer<span style="color:#f92672">.</span>add_page(page)
</span></span></code></pre></div><ul>
<li>بر روی هر صفحه از <code>input_pdf</code> تکرار می‌شود.</li>
<li><strong><code>merge_page(watermark_page)</code></strong> واترمارک را روی صفحه جاری قرار می‌دهد.</li>
<li>صفحه تغییر داده شده را به <code>writer</code> اضافه می‌کند.</li>
</ul>
<p><strong>۷. ذخیره فایل PDF حاوی واترمارک</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-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">with</span> open(output_pdf, <span style="color:#e6db74">&#34;wb&#34;</span>) <span style="color:#66d9ef">as</span> output_file:
</span></span><span style="display:flex;"><span>    writer<span style="color:#f92672">.</span>write(output_file)
</span></span></code></pre></div><ul>
<li>صفحات تغییر داده شده را در یک فایل PDF جدید می‌نویسد.</li>
</ul>
<p><strong>۸. چاپ تأییدیه</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-python" data-lang="python"><span style="display:flex;"><span>print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Watermarked PDF saved as: </span><span style="color:#e6db74">{</span>output_pdf<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
</span></span></code></pre></div><ul>
<li>مسیر فایل خروجی را برای تایید نمایش می‌دهد.</li>
</ul>
<h3 id="فایل-pdf-ورودی-فایل-pdf-واترمارک-و-فایل-pdf-خروجی">فایل PDF ورودی، فایل PDF واترمارک، و فایل PDF خروجی</h3>
<ul>
<li><strong>فایل PDF ورودی:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-watermark">لینک دانلود</a></li>
<li><strong>فایل PDF واترمارک:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-watermark">لینک دانلود</a></li>
<li><strong>فایل PDF خروجی حاوی واترمارک:</strong> <a href="https://github.com/fileformat-blog-gists/code/tree/main/working-with-pdf-files-in-python/pdf-to-watermark">لینک دانلود</a></li>
</ul>
<p><strong>تصویر</strong>
<img loading="lazy" src="https://raw.githubusercontent.com/fileformat-blog-gists/content/main/working-with-pdf-files-in-python/watermark-pdf.png" alt="تصویر PDF دارای واترمارک با استفاده از پایتون"  />
</p>
<h2 id="نتیجهگیری">نتیجه‌گیری</h2>
<p>در این راهنما، به عملیات‌های اساسی PDF در پایتون از جمله استخراج متن، چرخاندن صفحات، ادغام کردن، تقسیم کردن، و افزودن واترمارک پرداختیم. با این مهارت‌ها، اکنون می‌توانید مدیر فایل PDF خود را بسازید و وظایف مختلف PDF را به طور موثری خودکار کنید.</p>
]]></content:encoded>
    </item>
    
    <item>
      <title>استخراج متن از فایل PDF با استفاده از پایتون</title>
      <link>https://blog.fileformat.com/fa/programming/extract-text-from-pdf-file-using-python/</link>
      <pubDate>Wed, 15 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/fa/programming/extract-text-from-pdf-file-using-python/</guid>
      <description>این مقاله به شما نشان می‌دهد که چگونه با استفاده از کتابخانه‌های محبوب مانند PyPDF و PyMuPDF متن را از فایل PDF در پایتون استخراج کنید. همچنین نمونه کد، فایل‌های نمونه و خروجی را فراهم می‌کند.</description>
      <content:encoded><![CDATA[<p><strong>آخرین بروزرسانی</strong>: ۱۵ ژانویه ۲۰۲۵</p>
<figure class="align-center ">
    <img loading="lazy" src="images/extract-text-from-pdf-file-using-python.webp#center"
         alt="Title - Extract Text from PDF File Using Python"/> 
</figure>

<h2 id="استخراج-متن-از-فایل-pdf-با-استفاده-از-پایتون">استخراج متن از فایل PDF با استفاده از پایتون</h2>
<p>در این مقاله، به شما خواهیم گفت <strong>چگونه متن را از فایل PDF با استفاده از پایتون استخراج کنید</strong>.</p>
<p>PDF به معنی <strong>فرمت سند قابل حمل</strong>، یک فرمت محبوب برای اسناد دیجیتال است. این فرمت طراحی شده تا امکان مشاهده و اشتراک‌گذاری اسناد به سادگی و با اطمینان، بدون توجه به نرم‌افزار، سخت‌افزار یا سیستم‌عامل، فراهم شود. فایل‌های PDF دارای پسوند <strong>.pdf</strong> هستند.</p>
<p>برای استخراج متن از یک فایل PDF با استفاده از پایتون، این کتابخانه‌ها معمولاً استفاده می‌شوند. ما به شما نشان خواهیم داد که چگونه متن را از یک PDF با استفاده از هر دوی آن‌ها استخراج کنید.</p>
<ol>
<li><a href="https://pypi.org/project/pypdf/"><strong>pypdf</strong></a></li>
<li><a href="https://pypi.org/project/PyMuPDF/"><strong>PyMuPDF</strong></a></li>
</ol>
<h2 id="چگونه-متن-یک-فایل-pdf-را-با-استفاده-از-pypdf-در-پایتون-استخراج-کنیم">چگونه متن یک فایل PDF را با استفاده از pypdf در پایتون استخراج کنیم</h2>
<p>در اینجا مراحل آمده است.</p>
<ol>
<li>نصب <strong>pypdf</strong></li>
<li>اجرای کد ارائه‌شده در این مقاله</li>
<li>مشاهده خروجی</li>
</ol>
<h3 id="نصب-pypdf">نصب pypdf</h3>
<p>می‌توانید <strong>pypdf</strong> را با استفاده از دستور زیر نصب کنید</p>
<pre tabindex="0"><code>pip install pypdf
</code></pre><h3 id="نمونه-کد-برای-استخراج-متن-از-pdf-با-استفاده-از-pypdf">نمونه کد برای استخراج متن از PDF با استفاده از pypdf</h3>
<p><strong>sample.pdf</strong> - <a href="https://github.com/shakeel-faiz/InputOutputDocs/raw/master/python-convert-pdf-to-image/sample.pdf">لینک دانلود</a> (این PDF نمونه در کد استفاده خواهد شد، اما شما می‌توانید از PDF خودتان هم استفاده کنید.)</p>
<p><strong>نمایی از نمونه PDF</strong></p>
<p><img loading="lazy" src="https://raw.githubusercontent.com/shakeel-faiz/InputOutputDocs/master/python-convert-pdf-to-image/sample-input-pdf-screenshot.png" alt="اسکرین‌شات نمونه ورودی PDF"  />
</p>
<h3 id="کد">کد</h3>
<p>اینجا یک مثال کامل کد برای <strong>استخراج متن از یک PDF با استفاده از pypdf</strong> است.</p>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/50b8279dca1fa397849031e8d370cd95.js?file=extract-text-from-pdf-using-pypdf.py"></script>

<h3 id="خروجی">خروجی</h3>
<p>در اینجا خروجی نمونه کدی که در بالا ارائه شده را مشاهده می‌کنید.</p>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/6870826ad3c40b67dfc3d4aef838328b.js?file=output-extract-text-from-pdf-using-pypdf"></script>

<h2 id="چگونه-متن-یک-فایل-pdf-را-با-استفاده-از-pymupdf-در-پایتون-استخراج-کنیم">چگونه متن یک فایل PDF را با استفاده از PyMuPDF در پایتون استخراج کنیم</h2>
<p>در اینجا مراحل آمده است.</p>
<ol>
<li>نصب <strong>PyMuPDF</strong></li>
<li>اجرای کد ارائه‌شده در این مقاله</li>
<li>مشاهده خروجی</li>
</ol>
<h3 id="نصب-pymupdf">نصب PyMuPDF</h3>
<p><strong>PyMuPDF</strong>، که همچنین به عنوان <strong>fitz</strong> شناخته می‌شود، را با استفاده از این دستور نصب کنید.</p>
<pre tabindex="0"><code>pip install pymupdf
</code></pre><h3 id="نمونه-کد-برای-استخراج-متن-از-pdf-با-استفاده-از-pymupdf">نمونه کد برای استخراج متن از PDF با استفاده از PyMuPDF</h3>
<p>ما از همان PDF که قبلاً استفاده شد استفاده کردیم</p>
<p><strong>sample.pdf</strong> - <a href="https://github.com/shakeel-faiz/InputOutputDocs/raw/master/python-convert-pdf-to-image/sample.pdf">لینک دانلود</a> (این PDF نمونه در کد استفاده خواهد شد، اما شما می‌توانید از PDF خودتان هم استفاده کنید.)</p>
<h3 id="کد-1">کد</h3>
<p>اینجا یک مثال کامل کد برای <strong>استخراج متن از یک PDF با استفاده از PyMuPDF</strong> است.</p>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/799f8ecafe4d64feb803548b0d1db36d.js?file=extract-text-from-pdf-using-pymupdf.py"></script>

<h3 id="خروجی-1">خروجی</h3>
<p>در اینجا خروجی نمونه کدی که در بالا ارائه شده را مشاهده می‌کنید.</p>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/cfda58da76b68dea4c5269b627901417.js?file=output-extract-text-from-pdf-using-pymupdf"></script>

<h2 id="نتیجهگیری">نتیجه‌گیری</h2>
<p>در این مقاله، نمونه کد پایتون، یک فایل نمونه و خروجی آن‌ها را فراهم کردیم تا چگونگی استخراج متن از یک PDF با استفاده از دو کتابخانه: PyPDF و PyMuPDF را نشان دهیم.</p>
<p>اگر سوالی دارید یا در اجرای کد با مشکلی مواجه می‌شوید، حتماً در <a href="https://forum.fileformat.com/">انجمن‌های ما</a> نظر بگذارید!</p>
<h2 id="همچنین-ببینید">همچنین ببینید</h2>
<ul>
<li><a href="https://blog.fileformat.com/programming/convert-pdf-to-image-in-python/">تبدیل PDF به تصویر در پایتون: راهنمای مرحله به مرحله</a></li>
<li><a href="https://blog.fileformat.com/programming/batch-change-file-encoding-to-utf8/">تغییر دسته‌بندی شده کدگذاری فایل به UTF-8</a></li>
</ul>
]]></content:encoded>
    </item>
    
    <item>
      <title>تبدیل PDF به تصویر در پایتون</title>
      <link>https://blog.fileformat.com/fa/programming/convert-pdf-to-image-in-python/</link>
      <pubDate>Sat, 04 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/fa/programming/convert-pdf-to-image-in-python/</guid>
      <description>نحوه تبدیل فایل PDF به تصویر (JPEG، PNG) در پایتون را با مثال‌های دقیق بیاموزید. راهنمای گام به گام با استفاده از کتابخانه‌های محبوب مانند pdf2image و PyMuPDF.</description>
      <content:encoded><![CDATA[<p><strong>آخرین به‌روزرسانی</strong>: ۲۷ ژانویه، ۲۰۲۵</p>
<figure class="align-center ">
    <img loading="lazy" src="images/convert-pdf-to-image-in-python.webp#center"
         alt="عنوان - تبدیل PDF به تصویر در پایتون: راهنمای گام به گام"/> 
</figure>

<h2 id="نحوه-تبدیل-pdf-به-تصویر-در-پایتون-راهنمای-گام-به-گام">نحوه تبدیل PDF به تصویر در پایتون: راهنمای گام به گام</h2>
<p>تبدیل فایل‌های PDF به فرمت‌های تصویری مانند <a href="https://docs.fileformat.com/image/jpeg/">JPEG</a> یا <a href="https://docs.fileformat.com/image/png/">PNG</a> می‌تواند بسیار مفید باشد، به‌ویژه برای سناریوهایی که نیاز به استخراج تصاویر از PDF، نمایش پیش‌نمایش سند یا کار با داده‌های تصویری دارید. <a href="https://www.python.org/">پایتون</a>، به‌عنوان یک زبان برنامه‌نویسی همه‌کاره، روش‌های متعدد برای انجام این کار به‌صورت کارآمد را ارائه می‌دهد.</p>
<p>در این راهنما، شما را با <strong>فرآیند گام‌به‌گام</strong> تبدیل یک PDF به تصویر در پایتون آشنا خواهیم کرد. یاد خواهید گرفت که چگونه با استفاده از کتابخانه‌های محبوب پایتون، نمونه‌های کد و نکات رفع اشکال به این هدف دست یابید. همچنین کد کامل و تصاویر خروجی آن و PDF نمونه‌ای که در داخل آن استفاده شده است را ارائه خواهیم داد.</p>
<h2 id="آنچه-برای-تبدیل-pdf-به-تصویر-در-پایتون-نیاز-دارید">آنچه برای تبدیل PDF به تصویر در پایتون نیاز دارید</h2>
<p>قبل از ورود به کد، مطمئن شوید که ابزارهای لازم برای شروع را دارید. برای این کار، باید کتابخانه‌های زیر را نصب کنید:</p>
<ol>
<li><a href="https://pillow.readthedocs.io/en/latest/handbook/tutorial.html"><strong>Pillow</strong></a>: یک کتابخانه محبوب پردازش تصویر در پایتون (PIL) که اغلب برای باز کردن، دستکاری و ذخیره‌سازی فایل‌های تصویری استفاده می‌شود.</li>
<li><a href="https://github.com/Belval/pdf2image"><strong>pdf2image</strong></a>: این کتابخانه به شما کمک می‌کند تا صفحات PDF را در پایتون به تصاویر تبدیل کنید. از <a href="https://poppler.freedesktop.org/"><strong>Poppler</strong></a> برای رندر کردن صفحات PDF به تصاویر استفاده می‌کند.</li>
</ol>
<h3 id="نصب-کتابخانههای-مورد-نیاز">نصب کتابخانه‌های مورد نیاز</h3>
<p>می‌توانید این کتابخانه‌ها را با استفاده از pip نصب کنید:</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>pip install pillow pdf2image
</span></span></code></pre></div><p>اگر <strong>Poppler</strong> در سیستم شما نصب نشده است، ممکن است نیاز به نصب آن به‌صورت جداگانه داشته باشید. راهنمای نصب برای پلتفرم خود را از <a href="https://github.com/Belval/pdf2image">اینجا</a> چک کنید.</p>
<h2 id="راهنمای-گامبهگام-برای-تبدیل-pdf-به-تصویر-در-پایتون">راهنمای گام‌به‌گام برای تبدیل PDF به تصویر در پایتون</h2>
<h3 id="گام-1-وارد-کردن-کتابخانههای-ضروری">گام 1: وارد کردن کتابخانه‌های ضروری</h3>
<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-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> pdf2image <span style="color:#f92672">import</span> convert_from_path
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> PIL <span style="color:#f92672">import</span> Image
</span></span></code></pre></div><h3 id="گام-2-تبدیل-pdf-به-تصاویر">گام 2: تبدیل PDF به تصاویر</h3>
<p>با وارد کردن کتابخانه‌ها، اکنون می‌توانید یک فایل PDF را به تصاویر تبدیل کنید. به این صورت:</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:#75715e"># تبدیل PDF به تصاویر</span>
</span></span><span style="display:flex;"><span>images <span style="color:#f92672">=</span> convert_from_path(<span style="color:#e6db74">&#39;yourfile.pdf&#39;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># ذخیره هر صفحه به‌عنوان یک تصویر</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> i, image <span style="color:#f92672">in</span> enumerate(images):
</span></span><span style="display:flex;"><span>    image<span style="color:#f92672">.</span>save(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#39;page_</span><span style="color:#e6db74">{</span>i<span style="color:#e6db74">}</span><span style="color:#e6db74">.jpg&#39;</span>, <span style="color:#e6db74">&#39;JPEG&#39;</span>)
</span></span></code></pre></div><h3 id="توضیح-کد">توضیح کد:</h3>
<ul>
<li>تابع <code>convert_from_path()</code> فایل PDF را به لیستی از <strong>شیءهای تصویر PIL</strong> تبدیل می‌کند.</li>
<li>سپس از میان تصاویر برای هر صفحه از PDF عبور کرده و آن را به‌عنوان یک تصویر جداگانه (در اینجا، فرمت JPEG) ذخیره می‌کنیم.</li>
</ul>
<h3 id="گام-3-اختیاری--تبدیل-به-فرمتهای-تصویری-دیگر"><strong>گام 3: اختیاری – تبدیل به فرمت‌های تصویری دیگر</strong></h3>
<p>می‌توانید به‌راحتی تصاویر را به فرمت‌های دیگر مانند PNG تبدیل کنید، با تغییر فرمت در متد <code>image.save()</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-python" data-lang="python"><span style="display:flex;"><span>image<span style="color:#f92672">.</span>save(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#39;page_</span><span style="color:#e6db74">{</span>i<span style="color:#e6db74">}</span><span style="color:#e6db74">.png&#39;</span>, <span style="color:#e6db74">&#39;PNG&#39;</span>)
</span></span></code></pre></div><h3 id="کد-کامل">کد کامل</h3>
<p>اینجا کد کامل آمده است. به‌راحتی می‌توانید آن را کپی کرده، با هر اسمی و با پسوند <code>.py</code> ذخیره و سپس اجرا کنید. به‌عنوان مثال، می‌توانید آن را <code>convert_pdf_to_images.py</code> نام‌گذاری کنید.</p>
<p>قبل از اجرا، فقط متغیر <code>pdf_path</code> را به مسیر فایل PDF ورودی خود بروزرسانی کنید.</p>
<script type="application/javascript" src="https://gist.github.com/fileformat-blog-gists/6e26bc3d0c73587f6be860e20a5d6881.js?file=convert-pdf-to-image-in-python.py"></script>

<h3 id="دانلود-pdf-نمونه-و-مشاهده-اسکرینشات-آن">دانلود PDF نمونه و مشاهده اسکرین‌شات آن</h3>
<p>می‌توانید از هر PDF استفاده کنید، اما به‌منظور اجرای این کد و تست آن، ما از این PDF خاص استفاده کردیم.</p>
<ul>
<li><a href="https://github.com/fileformat-blog-gists/content/raw/main/convert-pdf-to-image-in-python/sample.pdf">دانلود PDF نمونه</a></li>
</ul>
<p><img loading="lazy" src="https://raw.githubusercontent.com/fileformat-blog-gists/content/main/convert-pdf-to-image-in-python/sample-input-pdf-screenshot.png" alt="اسکرین‌شات PDF ورودی نمونه"  />
</p>
<h3 id="تصاویر-خروجی-تولیدشده-توسط-کد">تصاویر خروجی تولیدشده توسط کد</h3>
<ul>
<li>page_1.jpg</li>
<li>page_2.jpg</li>
<li>page_3.jpg</li>
</ul>
<p><img loading="lazy" src="https://raw.githubusercontent.com/fileformat-blog-gists/content/main/convert-pdf-to-image-in-python/output-images/page_1.jpg" alt="page_1.jpg"  />

<img loading="lazy" src="https://raw.githubusercontent.com/fileformat-blog-gists/content/main/convert-pdf-to-image-in-python/output-images/page_2.jpg" alt="page_2.jpg"  />

<img loading="lazy" src="https://raw.githubusercontent.com/fileformat-blog-gists/content/main/convert-pdf-to-image-in-python/output-images/page_3.jpg" alt="page_3.jpg"  />
</p>
<h2 id="روشهای-جایگزین-برای-تبدیل-pdf-به-تصویر-در-پایتون">روش‌های جایگزین برای تبدیل PDF به تصویر در پایتون</h2>
<p>در حالی که <strong>pdf2image</strong> و <strong>Poppler</strong> به‌طور گسترده استفاده می‌شوند، روش‌های دیگری نیز برای تبدیل PDF به تصویر بدون نیاز به <strong>Poppler</strong> وجود دارد. برای مثال:</p>
<ol>
<li><strong>استفاده از PyMuPDF (fitz)</strong>: این کتابخانه به شما اجازه می‌دهد تا تصاویر را از PDF استخراج کرده و دستکاری کنید.</li>
</ol>
<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>pip install pymupdf
</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-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> fitz  <span style="color:#75715e"># PyMuPDF</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># باز کردن فایل PDF</span>
</span></span><span style="display:flex;"><span>doc <span style="color:#f92672">=</span> fitz<span style="color:#f92672">.</span>open(<span style="color:#e6db74">&#34;yourfile.pdf&#34;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># عبور از هر صفحه و تبدیل به تصویر</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> page_num <span style="color:#f92672">in</span> range(len(doc)):
</span></span><span style="display:flex;"><span>    page <span style="color:#f92672">=</span> doc<span style="color:#f92672">.</span>load_page(page_num)
</span></span><span style="display:flex;"><span>    pix <span style="color:#f92672">=</span> page<span style="color:#f92672">.</span>get_pixmap()
</span></span><span style="display:flex;"><span>    pix<span style="color:#f92672">.</span>save(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;page_</span><span style="color:#e6db74">{</span>page_num<span style="color:#e6db74">}</span><span style="color:#e6db74">.png&#34;</span>)
</span></span></code></pre></div><p>این روش بدون نیاز به <strong>Poppler</strong> کار می‌کند و می‌تواند جایگزین خوبی باشد اگر با مشکلات نصب مواجه شدید.</p>
<h2 id="خطاها-و-رفع-اشکال-رایج"><strong>خطاها و رفع اشکال رایج</strong></h2>
<p>در حالی که تبدیل فایل‌های PDF به تصاویر در پایتون به‌طور کلی ساده است، ممکن است با برخی مشکلات مواجه شوید. در اینجا برخی از خطاهای رایج و راه‌حل‌های آن‌ها آورده شده است:</p>
<ol>
<li>
<p><strong>خطا: <code>OSError: cannot identify image file</code></strong></p>
<ul>
<li>این معمولاً زمانی رخ می‌دهد که <strong>PDF به‌درستی رندر نشده است</strong>. اطمینان حاصل کنید که <strong>Poppler</strong> به‌درستی نصب شده و از محیط پایتون شما قابل دسترسی است.</li>
</ul>
</li>
<li>
<p><strong>خطا: <code>RuntimeError: cannot open image file</code></strong></p>
<ul>
<li>این خطا ممکن است زمانی رخ دهد که شما در حال تلاش برای باز کردن یک فرمت تصویر هستید که پشتیبانی نمی‌شود. فرمت تصویری که در آن تصویر را ذخیره می‌کنید (JPEG، PNG و غیره) را دوباره بررسی کنید و اطمینان حاصل کنید که <strong>Pillow</strong> از آن پشتیبانی می‌کند.</li>
</ul>
</li>
</ol>
<h2 id="نتیجهگیری">نتیجه‌گیری</h2>
<p>تبدیل اسناد PDF به تصاویر در پایتون با کمک کتابخانه‌هایی مانند <strong>pdf2image</strong> و <strong>Pillow</strong> ساده است. چه به دنبال استخراج تصاویر از یک PDF باشید یا صرفاً بخواهید هر صفحه را به‌عنوان یک تصویر نمایش دهید، این راهنما به شما نشان داده که چگونه این کار را گام به گام انجام دهید.</p>
<p>به یاد داشته باشید، بسته به نیاز پروژه خود، می‌توانید کتابخانه‌های دیگر پایتون مانند <strong>PyMuPDF</strong> را نیز بررسی کنید تا به نتایج مشابهی دست‌یابید.</p>
<p>اگر سوالی دارید یا در اجرای این راه‌حل به مشکلی بر‌خورده‌اید، در <a href="https://forum.fileformat.com/">فروم‌های ما</a> نظر خود را بگذارید!</p>
<h2 id="به-اشتراک-بگذارید-و-کشف-کنید">به اشتراک بگذارید و کشف کنید</h2>
<p>اگر این راهنما به شما کمک کرده است، از به اشتراک‌گذاری آن با دیگران دریغ نکنید و برای دریافت نکات و ترفندهای کدنویسی بیشتر، به دیگر راهنماهای مفید ما نگاهی بیندازید!</p>
<h2 id="همچنین-ببینید">همچنین ببینید</h2>
<ul>
<li><a href="https://blog.fileformat.com/programming/batch-change-file-encoding-to-utf8/">تغییر رمزگذاری دسته‌ای فایل به UTF-8</a></li>
</ul>
]]></content:encoded>
    </item>
    
    <item>
      <title>جاوا یا PHP: کدام یک برای توسعه وب بهتر است؟</title>
      <link>https://blog.fileformat.com/fa/programming/java-or-php-which-one-is-better-for-web-development/</link>
      <pubDate>Fri, 10 Sep 2021 17:32:20 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/fa/programming/java-or-php-which-one-is-better-for-web-development/</guid>
      <description>جاوا بهتر از PHP است زیرا در مقایسه با PHP مزایای بیشتری را ارائه می دهد. اگرچه هر دو برای توسعه برنامه ها و صفحات مورد استفاده قرار می گیرند ، جاوا دارای امکانات بیشتری است که به همین دلیل توسط توسعه دهندگان ترجیح داده می شود</description>
      <content:encoded><![CDATA[<h2 class="wp-Block-Heading" id="جاوا-چیست">جاوا چیست؟</h2>
<p>یک زبان برنامه نویسی سطح بالا و شیء که با تعصب کلاس است ، توسط جیمز آرتور گوسلینگ ساخته شده است. طراحی این زبان تا حد امکان وابسته به پیاده سازی کمتر نگه داشته می شود. تقریباً تمام سیستم عامل ها از جاوا پشتیبانی می کنند که یک نحو ساده و آشنا است که یادگیری برای مبتدیان و توسعه دهندگان آسان تر می شود ، نحو آن آسان تر است. <a href="https://docs.fileformat.com/programming/java/">جاوا</a> یک زبان کلی است که شیء گرا ، ایمن ، پویا ، قوی و قابل حمل است.
بر خلاف سالهای اولیه که IDE خاص و سیستم عامل های خاص برای تهیه کد برخی از زبان های خاص مورد نیاز بودند ، بسیاری از محیط های توسعه یکپارچه با جاوا سازگار هستند. این IDE ها شامل Visual Studio ، Eclipse ، Apache NetBeans ، CodeEnvy و غیره هستند. همه اینها برای تهیه و اجرای کد جاوا مناسب ساخته شده اند.</p>
<h2 class="wp-Block-Heading" id="php-چیست">PHP چیست؟</h2>
<p>یک زبان برنامه نویسی دیگر <a href="https://docs.fileformat.com/programming/php/">PHP</a> است که به خاطر توسعه وب یک بستر عالی است. در سال 1994 ، راسموس لردورف نسخه های اولیه PHP را به همراه دو همراه خود شروع کرد. توسعه وب بیشتر در وب سرور اجرا می شود. بیش از یک هدف دارد. این می تواند برای توسعه سیستم های مدیریت پایگاه داده رابطه ای ، برنامه نویسی خط فرمان و برنامه های رابط کاربری گرافیکی استفاده شود.
در چند سال گذشته ، این زبان روی میلیون ها سرور نصب شده است و برای توسعه میلیون ها وب سایت استفاده شده است. برای برنامه نویسی و توسعه این زبانها ، بسیاری از سرورهای وب در بازار مانند XAMPP ، WAMP ، LAMP ، EasyPHP و غیره در دسترس هستند.</p>
<h2 class="wp-Block-Heading" id="چرا-باید-آنها-مقایسه-شوند">چرا باید آنها مقایسه شوند؟</h2>
<p>دلیل مقایسه آنها این است که هر دو برای توسعه وب استفاده می شوند. برای اکثر افراد در زمینه توسعه وب امکان یادگیری همه زبانها وجود ندارد. هر دو جاوا و PHP از کاربرد و شباهت های گسترده ای برخوردار هستند ، بنابراین بیشتر آنها مقایسه می شوند.</p>
<h3 class="wp-block-heading" id="سرعت-کدگذاری">سرعت کدگذاری</h3>
<p>جاوا حاوی سرعت کدگذاری بهینه شده است اما نتایج زمان لازم است. از طرف دیگر ، PHP شامل کد بهینه کمتر است در حالی که حاوی کدهای نتیجه کوتاهتر و کمتری است.</p>
<h3 class="wp-block-heading" id="شهرت">شهرت</h3>
<p>برای بررسی کدام یک از این زبانها از محبوبیت یا شهرت بیشتری برخوردار است ، ما باید توجه شرکت ها و توسعه دهندگان را بدانیم. جاوا در مقایسه با PHP شهرت بیشتری در بین توسعه دهندگان و شرکت ها دارد.</p>
<h3 class="wp-block-heading" id="نشاط">نشاط</h3>
<p>نشاط کد یا زبان برنامه نویسی به معنای پایدار بودن نتایج و کد است. این خاصیت در جاوا کمتر است زیرا پس از پروژه از دست رفته است. در PHP متوجه خواهید شد که کد ، نتایج پایدار است و در هر مرحله از سرزندگی برخوردار است.</p>
<h3 class="wp-block-heading" id="آسان-برای-یادگیری">آسان برای یادگیری</h3>
<p>یادگیری هر دوی این موارد آسان تر است زیرا جاوا و PHP بیشتر برای توسعه وب استفاده می شوند که در مقایسه با سایر زبانها یک کار پیچیده نیست.</p>
<h3 class="wp-block-heading" id="ایمنی-حافظه">ایمنی حافظه</h3>
<p>جاوا نسبت به PHP امنیت بیشتری دارد زیرا امنیت در برابر حملات به همراه اشکالات موجود در سیستم شما را فراهم می کند. برای این جنبه ، جاوا نسبت به PHP ایمن تر و از حافظه ایمن تر است.</p>
<h3 class="wp-block-head" id="سهولت-اسناد">سهولت اسناد</h3>
<p>جاوا دارای خواص مستندات ساده تر و کمتری است. از نظر آماری تایپ شده است و مستندات بدون خطا را ارائه می دهد. در حالی که PHP به صورت پویا تایپ می شود و اسناد آن نسبت به جاوا پیچیده است.</p>
<h3 class="wp-block-heading" id="بهتر-برای-حرفه">بهتر برای حرفه</h3>
<p>برای کار حرفه ای ، جاوا ترجیح داده می شود زیرا در هر مرحله ثبات و سرعت بهتری در مقایسه با PHP فراهم می کند. این ممکن است به دلیل دلیل کمتری سرعت و پایداری PHP باشد.</p>
<h3 class="wp-block-heading" id="هزینه">هزینه</h3>
<p>هر دو زبان توسعه هستند و در کنار برخی تفاوت ها شباهت دارند. هزینه توسعه جاوا نسبت به PHP بیشتر است. این به دلیل ویژگی ها و الزامات هر دو زبان است.</p>
<h3 class="wp-Block-Heading" id="عملکرد"><strong>عملکرد</strong></h3>
<p>در این مقایسه ، جاوا در مقایسه با PHP توانایی عملکرد بیشتری دارد. کد پیش فرض جاوا یکی دیگر از مزایای آن است که به توانایی عملکرد بهتر آن می افزاید.</p>
<h2 class="wp-Block-Heading" id="چه-زمانی-از-جاوا-و-php-استفاده-می-شود">چه زمانی از جاوا و PHP استفاده می شود؟</h2>
<p>برای توسعه وب و طراحی وب سایت ، هر دو مورد در مقیاس بزرگ استفاده می شود. اما بر اساس ویژگی هایی که هر دوی اینها ارائه می دهند تفاوت هایی در استفاده وجود دارد</p>
<h3 class="wp-Block-Heading" id="جاوا-برای-چه-چیزی-استفاده-می-شود">جاوا برای چه چیزی استفاده می شود؟</h3>
<p>استفاده خاص از جاوا برای توسعه برنامه ها است. برنامه های مشخص شده به یک رایانه واحد یا توزیع شده در بین رایانه های مختلف از طریق جاوا تهیه می شوند. برنامه های کاربردی مبتنی بر بازی ، ابر ، وب ، موبایل ، رابط کاربری گرافیکی دسک تاپ و فن آوری های بزرگ داده ها در زیر بستر جاوا تهیه شده اند.</p>
<h3 class="wp-Block-Heading" id="php-برای-چه-استفاده-می-شود">PHP برای چه استفاده می شود؟</h3>
<p>PHP که یک زبان اسکریپت است ، هدف اصلی این زبان اسکریپت های سمت سرور است. برنامه نویسی خط فرمان به سرورهای وب احتیاج ندارد. این می تواند برای ایجاد برنامه های دسک تاپ با رابط کاربری گرافیکی استفاده شود. PHP بهترین زبان برای این منظور نیست اما ویژگی ها و توانایی های آن برای توسعه وب مناسب است و در مقیاس بزرگ مورد استفاده قرار می گیرد.</p>
<h2 class="wp-block-heading" id="خط-پایین">خط پایین</h2>
<p>با مقایسه ویژگی ها ، شباهت ها ، تفاوت ها ، استفاده و محدودیت های زبانها می توانیم در نظر بگیریم که جاوا بهتر از PHP است زیرا در مقایسه با PHP مزایای بیشتری را ارائه می دهد. اگرچه هر دو برای توسعه برنامه ها و صفحات مورد استفاده قرار می گیرند ، جاوا دارای امکانات بیشتری است که به همین دلیل توسط توسعه دهندگان ترجیح داده می شود.</p>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
