<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Merge on SoloSoft</title><link>https://www.solosoft.dev/tags/merge/</link><description>Recent content in Merge on SoloSoft</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 01 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.solosoft.dev/tags/merge/index.xml" rel="self" type="application/rss+xml"/><item><title>pypdf: Pure Python PDF Toolkit</title><link>https://www.solosoft.dev/post/pypdf-library-2026/</link><pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate><guid>https://www.solosoft.dev/post/pypdf-library-2026/</guid><description>&lt;p&gt;When you need to manipulate PDFs in Python without heavy external dependencies, pypdf is the go-to solution. This pure Python library provides comprehensive PDF manipulation capabilities including splitting, merging, cropping, rotating, encrypting, and text extraction, all without requiring any native code or system libraries.&lt;/p&gt;
&lt;p&gt;Pypdf has been the standard Python PDF library for over a decade. It has evolved through multiple major versions and now offers a clean, modern API that is easy to use while being remarkably powerful under the hood. The library parses the PDF specification directly, giving it access to every element in the document structure.&lt;/p&gt;
&lt;h2 id="core-capabilities"&gt;Core Capabilities&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Feature&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;API&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Page operations&lt;/td&gt;
 &lt;td&gt;Merge, split, rotate, scale, crop&lt;/td&gt;
 &lt;td&gt;PdfWriter + PdfReader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Metadata&lt;/td&gt;
 &lt;td&gt;Read and write document metadata&lt;/td&gt;
 &lt;td&gt;metadata property&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Encryption&lt;/td&gt;
 &lt;td&gt;PDF password protection and decryption&lt;/td&gt;
 &lt;td&gt;encrypt() / decrypt()&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Text extraction&lt;/td&gt;
 &lt;td&gt;Extract text from pages with layout options&lt;/td&gt;
 &lt;td&gt;extract_text()&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Form filling&lt;/td&gt;
 &lt;td&gt;Fill PDF AcroForm fields&lt;/td&gt;
 &lt;td&gt;update_page_form_field_values()&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="document-processing-flow"&gt;Document Processing Flow&lt;/h2&gt;

&lt;figure class="mermaid-wrapper not-prose" role="img" aria-label="Mermaid diagram"&gt;
 &lt;div class="mermaid-container"&gt;
 &lt;pre class="mermaid"&gt;flowchart LR
 A[Input PDFs] --&amp;gt; B[PdfReader]
 B --&amp;gt; C{Operation Type}
 C --&amp;gt;|Merge| D[PdfWriter.append]
 C --&amp;gt;|Split| E[PdfWriter per page]
 C --&amp;gt;|Transform| F[Page transformation]
 C --&amp;gt;|Extract| G[text_extraction]
 D --&amp;gt; H[PdfWriter]
 E --&amp;gt; H
 F --&amp;gt; H
 G --&amp;gt; H
 H --&amp;gt; I[write() to File]&lt;/pre&gt;
 &lt;script type="application/mermaid"&gt;flowchart LR
 A[Input PDFs] --&gt; B[PdfReader]
 B --&gt; C{Operation Type}
 C --&gt;|Merge| D[PdfWriter.append]
 C --&gt;|Split| E[PdfWriter per page]
 C --&gt;|Transform| F[Page transformation]
 C --&gt;|Extract| G[text_extraction]
 D --&gt; H[PdfWriter]
 E --&gt; H
 F --&gt; H
 G --&gt; H
 H --&gt; I[write() to File]&lt;/script&gt;
 &lt;/div&gt;
&lt;/figure&gt;&lt;p&gt;The workflow centers around PdfReader for input and PdfWriter for output. Pages are read, manipulated, and assembled into a new document. Text extraction bypasses the Writer path and returns strings directly.&lt;/p&gt;</description></item></channel></rss>