<?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: Webequipe</title>
    <description>The latest articles on DEV Community by Webequipe (@web_equipe_6ce39cc961f26b).</description>
    <link>https://dev.to/web_equipe_6ce39cc961f26b</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4002199%2Feb610c38-359c-4438-b6ac-9604d45f8211.png</url>
      <title>DEV Community: Webequipe</title>
      <link>https://dev.to/web_equipe_6ce39cc961f26b</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/web_equipe_6ce39cc961f26b"/>
    <language>en</language>
    <item>
      <title>AI Agents Can Read Your Website — But Can They Read Your PDF</title>
      <dc:creator>Webequipe</dc:creator>
      <pubDate>Thu, 09 Jul 2026 07:02:31 +0000</pubDate>
      <link>https://dev.to/web_equipe_6ce39cc961f26b/ai-agents-can-read-your-website-but-can-they-read-your-pdf-1k2b</link>
      <guid>https://dev.to/web_equipe_6ce39cc961f26b/ai-agents-can-read-your-website-but-can-they-read-your-pdf-1k2b</guid>
      <description>&lt;p&gt;Websites are changing.&lt;/p&gt;

&lt;p&gt;A few years ago, we mainly cared about human visitors and Google search. Now we also need to think about AI search tools, chatbots, RAG systems, and AI agents that read website content to answer questions.&lt;/p&gt;

&lt;p&gt;But there is one problem many WordPress sites still ignore:&lt;/p&gt;

&lt;p&gt;A lot of important content is locked inside PDFs.&lt;/p&gt;

&lt;p&gt;And if that PDF content is not searchable or properly indexed, users may never find it.&lt;/p&gt;

&lt;h2&gt;
  
  
  PDFs Are Not Just Attachments
&lt;/h2&gt;

&lt;p&gt;Many websites upload PDFs for things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;manuals&lt;/li&gt;
&lt;li&gt;reports&lt;/li&gt;
&lt;li&gt;policy documents&lt;/li&gt;
&lt;li&gt;forms&lt;/li&gt;
&lt;li&gt;product guides&lt;/li&gt;
&lt;li&gt;public notices&lt;/li&gt;
&lt;li&gt;documentation&lt;/li&gt;
&lt;li&gt;brochures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The problem is that most site owners treat these PDFs like simple downloadable files.&lt;/p&gt;

&lt;p&gt;But if the PDF contains useful information, then it is not just a file.&lt;/p&gt;

&lt;p&gt;It is part of your website content.&lt;/p&gt;

&lt;p&gt;For example, a visitor may search: refund policy for international orders&lt;/p&gt;

&lt;p&gt;Maybe the answer exists inside a PDF. But if your WordPress search cannot read inside that PDF, the visitor gets no result.&lt;/p&gt;

&lt;p&gt;From the user’s point of view, the content does not exist.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Agents Have the Same Problem
&lt;/h2&gt;

&lt;p&gt;AI tools are becoming better at reading web pages. But a random PDF link is not always enough.&lt;/p&gt;

&lt;p&gt;An AI agent or chatbot needs clear, accessible, searchable content.&lt;/p&gt;

&lt;p&gt;If your important information is inside a PDF but not extracted or indexed, then your site creates a gap:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Website pages = readable
PDF files = often hidden
Search result = incomplete
AI answer = missing context
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is a bigger issue for websites that depend on documents, such as universities, government websites, nonprofits, healthcare sites, legal sites, SaaS documentation, and product manual libraries.&lt;/p&gt;

&lt;h2&gt;
  
  
  Text PDFs vs Scanned PDFs
&lt;/h2&gt;

&lt;p&gt;Not all PDFs are the same.&lt;/p&gt;

&lt;p&gt;There are usually three types:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Text-based PDFs&lt;br&gt;
These PDFs contain selectable text. The text can usually be extracted and indexed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scanned PDFs&lt;br&gt;
These are basically images inside a PDF. You cannot properly search them unless OCR is used.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mixed PDFs&lt;br&gt;
Some pages have text, and some pages are scanned images.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This matters because your search system must understand what kind of PDF it is handling.&lt;/p&gt;

&lt;p&gt;A simple text PDF may only need text extraction.&lt;br&gt;
A scanned PDF needs OCR.&lt;/p&gt;
&lt;h2&gt;
  
  
  A Quick WordPress Check
&lt;/h2&gt;

&lt;p&gt;If you are a developer, you can quickly check how many PDFs exist on a WordPress site:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$pdfs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_posts&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
    &lt;span class="s1"&gt;'post_type'&lt;/span&gt;      &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'attachment'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'post_mime_type'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'application/pdf'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'post_status'&lt;/span&gt;    &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'inherit'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'posts_per_page'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;]);&lt;/span&gt;

&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'Total PDFs found: '&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nb"&gt;count&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$pdfs&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the number is high, then your site probably has a lot of hidden content.&lt;/p&gt;

&lt;p&gt;The next question is:&lt;/p&gt;

&lt;p&gt;Can users actually search inside those PDFs?&lt;/p&gt;

&lt;h2&gt;
  
  
  Make PDFs More Useful
&lt;/h2&gt;

&lt;p&gt;A better document structure can help both users and AI systems.&lt;/p&gt;

&lt;p&gt;Instead of only adding a plain PDF link like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/files/safety-manual.pdf"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Download PDF&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add context around it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;article&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"document-card"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;Product Safety Manual&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;
    Includes installation steps, safety warnings,
    and maintenance instructions.
  &lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/files/safety-manual.pdf"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;View PDF&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/article&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This helps users understand the document before opening it.&lt;br&gt;
It also gives search engines and AI tools better context.&lt;/p&gt;
&lt;h2&gt;
  
  
  A Simple PDF Search Workflow
&lt;/h2&gt;

&lt;p&gt;A useful PDF search system should work like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;PDF uploaded&lt;br&gt;
↓&lt;br&gt;
Text extracted or OCR processed&lt;br&gt;
↓&lt;br&gt;
Content indexed&lt;br&gt;
↓&lt;br&gt;
User searches from WordPress&lt;br&gt;
↓&lt;br&gt;
Relevant PDF result appears&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;That is the missing layer in many WordPress websites.&lt;/p&gt;
&lt;h2&gt;
  
  
  Where WebEquipe PDF Search Fits
&lt;/h2&gt;

&lt;p&gt;For WordPress sites, a plugin like &lt;a href="https://webequipe.com/pdf-search/" rel="noopener noreferrer"&gt;WebEquipe PDF Search&lt;/a&gt; can help make PDF content searchable.&lt;/p&gt;

&lt;p&gt;You can add a PDF search form using a shortcode like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[webequipe_pdf_search_form placeholder="Search PDFs..." button_text="Search" results_per_page="10"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The free version is useful for text-based PDFs.&lt;br&gt;
For scanned PDFs, OCR support is needed, which is where a Pro/OCR workflow becomes important.&lt;/p&gt;

&lt;p&gt;The goal is not only to “search files.”&lt;/p&gt;

&lt;p&gt;The real goal is to make PDF content part of the website experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;AI agents, chatbots, and modern search tools are changing how people find information.&lt;/p&gt;

&lt;p&gt;But if your most valuable content is hidden inside PDFs, your website may look complete while still being difficult to search.&lt;/p&gt;

&lt;p&gt;So before adding another AI tool to your WordPress site, ask one simple question:&lt;/p&gt;

&lt;p&gt;Can users — and AI systems — actually read what is inside your PDFs?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>wordpress</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Why PDF Indexing in WordPress Needs Background Processing</title>
      <dc:creator>Webequipe</dc:creator>
      <pubDate>Fri, 03 Jul 2026 06:20:24 +0000</pubDate>
      <link>https://dev.to/web_equipe_6ce39cc961f26b/why-pdf-indexing-in-wordpress-needs-background-processing-3em</link>
      <guid>https://dev.to/web_equipe_6ce39cc961f26b/why-pdf-indexing-in-wordpress-needs-background-processing-3em</guid>
      <description>&lt;p&gt;Uploading a PDF to WordPress feels simple.&lt;/p&gt;

&lt;p&gt;You add the file to the Media Library, WordPress stores it, and the file is ready to use.&lt;/p&gt;

&lt;p&gt;But if you want that PDF to become searchable, the work does not stop at upload.&lt;/p&gt;

&lt;p&gt;The plugin has to read the PDF, extract the text, clean the content, store it in a searchable index, and later match that content with user search queries.&lt;/p&gt;

&lt;p&gt;That sounds fine for one small PDF.&lt;/p&gt;

&lt;p&gt;But what happens when the file has 100 pages?&lt;/p&gt;

&lt;p&gt;Or when the website has hundreds of PDFs?&lt;/p&gt;

&lt;p&gt;Or when the PDF is scanned and needs OCR?&lt;/p&gt;

&lt;p&gt;That is where background processing becomes important.&lt;/p&gt;

&lt;h2&gt;
  
  
  PDF Indexing Is Heavier Than Normal WordPress Tasks
&lt;/h2&gt;

&lt;p&gt;Most WordPress content is already stored in the database.&lt;/p&gt;

&lt;p&gt;When you publish a post, the title and body content are saved in fields like &lt;code&gt;post_title&lt;/code&gt; and &lt;code&gt;post_content&lt;/code&gt;. Search can query that data directly.&lt;/p&gt;

&lt;p&gt;PDFs are different.&lt;/p&gt;

&lt;p&gt;A PDF is a file. WordPress stores the file information, but it does not automatically read the actual text inside that file.&lt;/p&gt;

&lt;p&gt;So a PDF search plugin needs to do extra work:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb6elz4ix7h5p4qw4qoby.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb6elz4ix7h5p4qw4qoby.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For a small text-based PDF, this may happen quickly.&lt;/p&gt;

&lt;p&gt;But large files can take more time. Some PDFs have complex layouts, repeated headers, tables, images, or broken text structure. Scanned PDFs are even heavier because they need OCR before any text can be indexed.&lt;/p&gt;

&lt;p&gt;Trying to do all of this instantly during upload is risky.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem With Processing During Upload
&lt;/h2&gt;

&lt;p&gt;When a user uploads a PDF, WordPress is handling that request in real time.&lt;/p&gt;

&lt;p&gt;If your plugin starts parsing a large PDF immediately, several things can go wrong:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The upload request may become slow&lt;/li&gt;
&lt;li&gt;PHP execution time may run out&lt;/li&gt;
&lt;li&gt;Memory usage may increase&lt;/li&gt;
&lt;li&gt;The admin screen may freeze&lt;/li&gt;
&lt;li&gt;OCR processing may take too long&lt;/li&gt;
&lt;li&gt;The user may not know whether indexing succeeded or failed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This creates a bad experience.&lt;/p&gt;

&lt;p&gt;The user only wanted to upload a document. They should not have to wait while the system tries to fully process a 200-page PDF in the same request.&lt;/p&gt;

&lt;p&gt;That is why PDF indexing should be treated as a background job, not an upload-time task.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Better Flow: Queue the Work
&lt;/h2&gt;

&lt;p&gt;A more reliable approach is to separate file upload from file processing.&lt;/p&gt;

&lt;p&gt;The upload should stay fast. After upload, the plugin creates an indexing job and processes it later.&lt;/p&gt;

&lt;p&gt;A simple flow looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7011w3l8ow248bozwcgr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7011w3l8ow248bozwcgr.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This makes the system much easier to manage.&lt;/p&gt;

&lt;p&gt;Instead of forcing everything to happen immediately, the plugin can process PDFs one by one in the background.&lt;/p&gt;

&lt;p&gt;For example, the plugin can store a job like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="s1"&gt;'attachment_id'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;245&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'status'&lt;/span&gt;        &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'pending'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'type'&lt;/span&gt;          &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'text_extraction'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'attempts'&lt;/span&gt;      &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'created_at'&lt;/span&gt;    &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;current_time&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'mysql'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then a background worker can pick up pending jobs and process them safely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Status Tracking Matters
&lt;/h2&gt;

&lt;p&gt;Background processing also makes status tracking possible.&lt;/p&gt;

&lt;p&gt;A PDF can move through states like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pending
processing
indexed
ocr_required
failed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is useful for admins.&lt;/p&gt;

&lt;p&gt;Without status tracking, users have no idea what happened. A PDF may be uploaded, but not searchable. Or OCR may fail silently. Or the file may be too large to process.&lt;/p&gt;

&lt;p&gt;A clear status helps users understand the situation.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Pending” means the file is waiting to be processed&lt;/li&gt;
&lt;li&gt;“Processing” means indexing is running&lt;/li&gt;
&lt;li&gt;“Indexed” means the PDF is searchable&lt;/li&gt;
&lt;li&gt;“OCR required” means normal text extraction found little or no text&lt;/li&gt;
&lt;li&gt;“Failed” means the job needs attention or retry&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes the plugin feel more predictable.&lt;/p&gt;

&lt;h2&gt;
  
  
  OCR Makes Background Processing Even More Important
&lt;/h2&gt;

&lt;p&gt;Text-based PDFs can often be processed with a parser.&lt;/p&gt;

&lt;p&gt;Scanned PDFs are different.&lt;/p&gt;

&lt;p&gt;A scanned PDF is basically an image inside a PDF file. A normal parser may return empty content because there is no text layer.&lt;/p&gt;

&lt;p&gt;In that case, OCR is needed.&lt;/p&gt;

&lt;p&gt;OCR usually means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Convert PDF page to image
↓
Send image to OCR engine
↓
Receive detected text
↓
Store text in search index
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is much heavier than normal text extraction.&lt;/p&gt;

&lt;p&gt;If the plugin uses an external OCR service like Google Vision API, the processing time also depends on API response time, page count, network conditions, and retry handling.&lt;/p&gt;

&lt;p&gt;Running this during upload is not a good idea.&lt;/p&gt;

&lt;p&gt;A queue-based system gives the plugin room to process OCR safely without breaking the admin experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Retry Logic Helps With Real-World Failures
&lt;/h2&gt;

&lt;p&gt;Background jobs can fail for many reasons.&lt;/p&gt;

&lt;p&gt;The file may be corrupted.&lt;br&gt;
The server may run out of memory.&lt;br&gt;
The OCR API may timeout.&lt;br&gt;
The PDF parser may fail on a strange file structure.&lt;/p&gt;

&lt;p&gt;Instead of failing permanently, the plugin can retry the job.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$job&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'attempts'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;retry_indexing_job&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$job&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'id'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;mark_job_as_failed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$job&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'id'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes the system more resilient.&lt;/p&gt;

&lt;p&gt;Not every failure needs to become a support issue. Some failures can be retried automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;PDF search looks simple from the outside.&lt;/p&gt;

&lt;p&gt;A visitor searches, and a PDF appears in the result.&lt;/p&gt;

&lt;p&gt;But behind that simple experience, the plugin has to extract content, detect scanned files, run OCR when needed, store searchable text, and handle failures.&lt;/p&gt;

&lt;p&gt;That is why background processing matters.&lt;/p&gt;

&lt;p&gt;It keeps uploads fast.&lt;br&gt;
It avoids PHP timeout issues.&lt;br&gt;
It makes OCR manageable.&lt;br&gt;
It allows status tracking.&lt;br&gt;
It gives the system a way to retry failed jobs.&lt;/p&gt;

&lt;p&gt;For WebEquipe PDF Search, this kind of thinking is important because PDF indexing is not just a search feature. It is a processing pipeline.&lt;/p&gt;

&lt;p&gt;And when a WordPress plugin handles heavy file processing, the best experience is usually the one users do not have to wait for.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>php</category>
      <category>performance</category>
    </item>
    <item>
      <title>Why WordPress Search Ignores Your PDFs — and How to Fix It</title>
      <dc:creator>Webequipe</dc:creator>
      <pubDate>Thu, 25 Jun 2026 11:41:45 +0000</pubDate>
      <link>https://dev.to/web_equipe_6ce39cc961f26b/why-wordpress-search-ignores-your-pdfs-and-how-to-fix-it-3c45</link>
      <guid>https://dev.to/web_equipe_6ce39cc961f26b/why-wordpress-search-ignores-your-pdfs-and-how-to-fix-it-3c45</guid>
      <description>&lt;p&gt;WordPress search works well when your content lives inside posts and pages.&lt;/p&gt;

&lt;p&gt;But if important information is inside PDF files, WordPress often misses it completely.&lt;/p&gt;

&lt;p&gt;A visitor may search for a phrase that clearly exists inside a PDF manual, report, form, or policy document. But WordPress returns no result.&lt;/p&gt;

&lt;p&gt;The PDF is uploaded.&lt;br&gt;
The content exists.&lt;br&gt;
But search still cannot find it.&lt;/p&gt;

&lt;p&gt;So why does this happen?&lt;/p&gt;
&lt;h2&gt;
  
  
  WordPress Search Does Not Read PDF Content
&lt;/h2&gt;

&lt;p&gt;Default WordPress search mainly checks database fields like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;post_title
post_content
post_excerpt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you publish a post, the content is stored in &lt;code&gt;post_content&lt;/code&gt;, so WordPress can search it.&lt;/p&gt;

&lt;p&gt;But when you upload a PDF, WordPress treats it as a media attachment. It stores the file title, URL, MIME type, upload date, and some metadata.&lt;/p&gt;

&lt;p&gt;What it does not do by default is open the PDF, read the text inside it, and save that text into &lt;code&gt;post_content&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So this kind of situation is common:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PDF file: employee-handbook.pdf
Text inside PDF: "Remote work requests must be approved by HR"
WordPress searchable content: filename and attachment data only
Search query: "remote work requests"
Result: no match
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The text is inside the file, but not inside the database fields WordPress normally searches.&lt;/p&gt;

&lt;p&gt;That is the main reason PDF search fails.&lt;/p&gt;

&lt;h2&gt;
  
  
  Not All PDFs Are the Same
&lt;/h2&gt;

&lt;p&gt;Before fixing PDF search, you need to understand one important difference.&lt;/p&gt;

&lt;p&gt;There are two common types of PDFs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Text-based PDFs&lt;/li&gt;
&lt;li&gt;Scanned PDFs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;They may look the same in the browser, but technically they behave very differently.&lt;/p&gt;

&lt;h2&gt;
  
  
  Text-Based PDFs
&lt;/h2&gt;

&lt;p&gt;A text-based PDF contains real selectable text.&lt;/p&gt;

&lt;p&gt;If you can open a PDF, select a sentence, copy it, and paste it into a text editor, it probably has a text layer.&lt;/p&gt;

&lt;p&gt;These PDFs are usually exported from tools like Word, Google Docs, InDesign, or reporting software.&lt;/p&gt;

&lt;p&gt;For these files, a plugin can use a PDF parser to extract the text.&lt;br&gt;
In PHP, one common library is &lt;code&gt;smalot/pdfparser&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;Smalot\PdfParser\Parser&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="nv"&gt;$parser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Parser&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
&lt;span class="nv"&gt;$pdf&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$parser&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;parseFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$file_path&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 

&lt;span class="nv"&gt;$text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$pdf&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nb"&gt;getText&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="k"&gt;empty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$text&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
&lt;span class="c1"&gt;// Store extracted text for search &lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After extraction, the text needs to be stored somewhere searchable.&lt;/p&gt;

&lt;p&gt;For small use cases, post meta may work. But for better control and performance, a custom database table is usually better.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;wp_pdf_search_index&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; 
  &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="nb"&gt;BIGINT&lt;/span&gt; &lt;span class="nb"&gt;UNSIGNED&lt;/span&gt; &lt;span class="n"&gt;AUTO_INCREMENT&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
  &lt;span class="n"&gt;attachment_id&lt;/span&gt; &lt;span class="nb"&gt;BIGINT&lt;/span&gt; &lt;span class="nb"&gt;UNSIGNED&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
  &lt;span class="n"&gt;extracted_text&lt;/span&gt; &lt;span class="nb"&gt;LONGTEXT&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
  &lt;span class="n"&gt;indexed_at&lt;/span&gt; &lt;span class="nb"&gt;DATETIME&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
  &lt;span class="n"&gt;FULLTEXT&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt; &lt;span class="n"&gt;pdf_text_index&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;extracted_text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then the plugin can search the extracted PDF content:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;attachment_id&lt;/span&gt; 
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;wp_pdf_search_index&lt;/span&gt; 
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="k"&gt;MATCH&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;extracted_text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
&lt;span class="n"&gt;AGAINST&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'remote work requests'&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="k"&gt;NATURAL&lt;/span&gt; &lt;span class="k"&gt;LANGUAGE&lt;/span&gt; &lt;span class="k"&gt;MODE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So the PDF itself is not searched directly every time.&lt;/p&gt;

&lt;p&gt;Instead, the plugin extracts the PDF text once, stores it, and searches the stored index.&lt;/p&gt;

&lt;h2&gt;
  
  
  Showing PDF Results in WordPress Search
&lt;/h2&gt;

&lt;p&gt;Once PDF content is indexed, the next step is showing matching PDF files in the search results.&lt;/p&gt;

&lt;p&gt;A plugin can hook into WordPress search using &lt;code&gt;pre_get_posts&lt;/code&gt;, or it can provide a separate PDF search form.&lt;/p&gt;

&lt;p&gt;For example, a shortcode-based PDF search form can be placed on a resource page:&lt;/p&gt;

&lt;p&gt;[webequipe_pdf_search_form]&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[webequipe_pdf_search_form placeholder="Search PDFs…" button_text="Search" results_per_page="10"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is useful for documentation pages, school notice sections, report libraries, member portals, or product manual pages.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Scanned PDF Problem
&lt;/h2&gt;

&lt;p&gt;Text extraction works only when the PDF contains real text.&lt;/p&gt;

&lt;p&gt;But many PDFs are scanned documents.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;p&gt;Old reports&lt;br&gt;
Signed forms&lt;br&gt;
Scanned notices&lt;br&gt;
Paper manuals&lt;br&gt;
Archive documents&lt;br&gt;
Government or legal documents&lt;/p&gt;

&lt;p&gt;A scanned PDF may look readable to a human, but technically each page is just an image.&lt;br&gt;
So when a parser runs this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$pdf&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nb"&gt;getText&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It may return:&lt;/p&gt;

&lt;p&gt;''&lt;/p&gt;

&lt;p&gt;There are visible words on the page, but no machine-readable text layer.&lt;/p&gt;

&lt;p&gt;This is where normal PDF parsing stops.&lt;/p&gt;

&lt;h2&gt;
  
  
  OCR Is Needed for Scanned PDFs
&lt;/h2&gt;

&lt;p&gt;For scanned PDFs, the solution is OCR.&lt;/p&gt;

&lt;p&gt;OCR means Optical Character Recognition. It reads text from images and converts it into machine-readable text.&lt;/p&gt;

&lt;p&gt;The flow looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvfr8t6xdfat91pkigt1z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvfr8t6xdfat91pkigt1z.png" alt=" " width="800" height="1200"&gt;&lt;/a&gt;&lt;br&gt;
Google Vision API is one common OCR option. It can read pixel-based document images and return detected text.&lt;/p&gt;

&lt;p&gt;A simplified flow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$image_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'/tmp/page-1.png'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="nv"&gt;$ocr_text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;run_google_vision_ocr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$image_path&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="k"&gt;empty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$ocr_text&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
  &lt;span class="nf"&gt;index_pdf_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$attachment_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$ocr_text&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key idea is simple:&lt;/p&gt;

&lt;p&gt;Text-based PDFs need parsing.&lt;br&gt;
Scanned PDFs need OCR first.&lt;/p&gt;

&lt;p&gt;If a search plugin treats both the same way, scanned PDFs will usually fail.&lt;/p&gt;
&lt;h2&gt;
  
  
  A Simple Detection Strategy
&lt;/h2&gt;

&lt;p&gt;Most users do not know whether their PDF is text-based or scanned.&lt;/p&gt;

&lt;p&gt;So the plugin should decide automatically.&lt;br&gt;
A practical approach is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;extract_pdf_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$file_path&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;strlen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$text&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
  &lt;span class="nf"&gt;index_pdf_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$attachment_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$text&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
  &lt;span class="nf"&gt;queue_pdf_for_ocr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$attachment_id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;First, try normal extraction.&lt;/p&gt;

&lt;p&gt;If enough text is found, index it.&lt;/p&gt;

&lt;p&gt;If the result is empty or too short, send the file to OCR.&lt;/p&gt;

&lt;p&gt;For large PDFs or OCR processing, this should run in the background. Otherwise, uploads can become slow and PHP timeouts can happen.&lt;/p&gt;

&lt;p&gt;A better flow is:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1slbi88et2zsyjlijjxo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1slbi88et2zsyjlijjxo.png" alt=" " width="800" height="1200"&gt;&lt;/a&gt;&lt;br&gt;
In WordPress, this can be handled with WP-Cron, Action Scheduler, or a custom queue system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;WordPress search ignores PDFs because PDF content is not stored in the database fields WordPress normally searches.&lt;/p&gt;

&lt;p&gt;To fix it, you need a separate indexing pipeline.&lt;/p&gt;

&lt;p&gt;For text-based PDFs, extract the text and store it in a searchable index.&lt;/p&gt;

&lt;p&gt;For scanned PDFs, run OCR first, then store the detected text.&lt;/p&gt;

&lt;p&gt;That is the technical foundation of PDF search in WordPress.&lt;/p&gt;

&lt;p&gt;We built this into &lt;a href="https://webequipe.com/pdf-search/" rel="noopener noreferrer"&gt;WebEquipe PDF Search&lt;/a&gt;. The free version helps index text-based PDFs, and the Pro version adds OCR support for scanned PDFs.&lt;/p&gt;

&lt;p&gt;But the bigger idea is simple:&lt;/p&gt;

&lt;p&gt;Uploading a PDF does not automatically make its content searchable.&lt;/p&gt;

&lt;p&gt;If your WordPress site depends on PDFs, those files need to be treated as part of your search index.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>php</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
