<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Artem Kirkor</title>
    <description>The latest articles on DEV Community by Artem Kirkor (@artem_kirkor_8d783954b562).</description>
    <link>https://dev.to/artem_kirkor_8d783954b562</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3817126%2Fd527a774-32b9-4ec8-b346-a211de432abb.png</url>
      <title>DEV Community: Artem Kirkor</title>
      <link>https://dev.to/artem_kirkor_8d783954b562</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/artem_kirkor_8d783954b562"/>
    <language>en</language>
    <item>
      <title>DNPR (DOM-Native PDF Rendering). A Different Way to Think About PDFs</title>
      <dc:creator>Artem Kirkor</dc:creator>
      <pubDate>Tue, 10 Mar 2026 15:48:04 +0000</pubDate>
      <link>https://dev.to/artem_kirkor_8d783954b562/dnpr-dom-native-pdf-rendering-a-different-way-to-think-about-pdfs-1ole</link>
      <guid>https://dev.to/artem_kirkor_8d783954b562/dnpr-dom-native-pdf-rendering-a-different-way-to-think-about-pdfs-1ole</guid>
      <description>&lt;p&gt;In 2003, Apple introduced the &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; element in WebKit. It was a clever hack - draw pixels directly in the browser. Nobody designed it for PDF rendering. Yet here we are in 2026, and every major browser-based PDF editor still rasterizes documents to canvas. pdf.js, PDFium, all of them.&lt;/p&gt;

&lt;p&gt;The question nobody seems to ask: what if the document was an object, not an image?&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with Canvas
&lt;/h2&gt;

&lt;p&gt;Open DevTools on any PDF editor. Youll see a &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; element - the entire document rendered as pixels. Below it, a separate floating text layer used for selection and search. Two completely disconnected systems pretending to be one unified document.&lt;/p&gt;

&lt;p&gt;Remove the &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt;. Whats left are ghost text placeholders hanging in the air with no connection to anything structural. Thats not a bug. Thats the architecture.&lt;/p&gt;

&lt;p&gt;This means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;every edit requires selecting a specific tool first&lt;/li&gt;
&lt;li&gt;graphics cant be manipulated natively - theyre pixels inside pixels&lt;/li&gt;
&lt;li&gt;accessibility is always bolted on, never built in&lt;/li&gt;
&lt;li&gt;AI gets a flat image to guess at, not a structured tree to work with&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How DNPR works differently
&lt;/h2&gt;

&lt;p&gt;Instead of rasterizing to canvas, DNPR parses the raw PDF 2.0 binary structure directly. Each element is mapped to a corresponding native DOM node - preserving structure, position and content without rasterization.&lt;/p&gt;

&lt;p&gt;Text becomes &lt;code&gt;contentEditable&lt;/code&gt; spans. Graphics become SVG paths. Images become DOM elements. Every PDF element is a live, individually addressable DOM node - supporting deletion, replacement, resize and repositioning through standard browser APIs.&lt;/p&gt;

&lt;p&gt;Built on PDF 2.0 (ISO 32000-2:2020) - implementing all 73 content stream operators. Native support for 256-bit AES encryption, CAdES digital signatures, UTF-8 text encoding, Document Security Store and tagged PDF namespaces.&lt;/p&gt;

&lt;p&gt;The approach is formally designated DOM-Native PDF Rendering (DNPR), subject of U.S. Provisional Patent Application #63/997,982, filed March 6, 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it matters
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Editing speed&lt;/strong&gt; - no tool switching before every action. Click and edit directly, like a web page. Benchmark: 50 editing steps on the same document - DNPR completes the task with significantly fewer interactions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graphics control&lt;/strong&gt; - images and vectors are real DOM objects, not pixels inside pixels&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI at core level&lt;/strong&gt; - AI gets a structured object tree, not a flat image. Change entire color scheme via single API call in ~200ms vs days of manual work via Canvas&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy by default&lt;/strong&gt; - DNPR is serverless, runs entirely on the client side. Browser is one of many runtimes. File never leaves the machine&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The core difference
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Canvas  →  document as an image  →  no control
DNPR    →  document as an object →  full control
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Where this goes
&lt;/h2&gt;

&lt;p&gt;Canvas made sense when PDF was designed for print and the web was read-only. In 2026 documents are workflows - they get edited, signed, automated, fed into AI pipelines. A rendering architecture that treats every document as a flat image is a fundamental mismatch with how documents are actually used today.&lt;/p&gt;

&lt;p&gt;DNPR is an attempt to fix that at the architecture level - not with a better tool layer on top of canvas, but by replacing the foundation entirely.&lt;/p&gt;

&lt;p&gt;Spent 16 months building this. Filed a US patent for the approach (patent pending, App. &lt;strong&gt;#63/997,982&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;Demo: pdfox.cloud/v2/demo&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>pdf</category>
      <category>showdev</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
