[PHP] .PDF -> Text

ktimk

Radfahrer
ID: 221953
L
10 August 2006
159
11
Hi,
Ich habe schon überall gesucht, bin aber noch nicht fündig geworden.
Ich suche ein PHP Script, mit dem man eine .pdf Datei in Text umwandeln kann.
Ich hoffe auf eine Antwort
mfg ktimk
 
Das ist gar nicht mal so einfach, wie man es sich vorstellt, da PDF nicht zwangsweise nur Text ist. Eine PDF Datei kann Rastergrafiken beinhalten, Texte, Vektorgrafiken ... eigentlich alles. Ich behaupte mal, es gibt gar kein "Skript" für PHP, welches PDF-Dateien zu Plaintext umkodieren kann.
 
Also so lange das PDF-Dokument noch Text enthält und dieser noch nicht in Kurven oder Pixel umgewandelt ist, ist es bestimmt möglich den Text auszulesen.

Ein Tool dazu kenne ich jetzt aber auch nicht. Schon mal danach gegoogelt?

Wenn der Text allerdings schon in Kurven oder Pixel umgewandelt wurde, müsstest du evtl. irgendwie das ganze über eine Texterkennungssoftware laufen lassen. Müsste halt eine sein, die mit PHP kommunizieren kann. Aber Texterkennungssoftwares sind halt doch nie perfekt.


// edit:

Grad gefunden auf https://de.php.net/pdf

PHP:
<?php
$test = pdf2string("<pathtoPDFfile>");
echo "$test";

# Returns a -1 if uncompression failed
function pdf2string($sourcefile)
{
   $fp = fopen($sourcefile, 'rb');
   $content = fread($fp, filesize($sourcefile));
   fclose($fp);

   # Locate all text hidden within the stream and endstream tags
   $searchstart = 'stream';
   $searchend = 'endstream';
   $pdfdocument = "";

   $pos = 0;
   $pos2 = 0;
   $startpos = 0;
   # Iterate through each stream block
   while( $pos !== false && $pos2 !== false )
   {
      # Grab beginning and end tag locations if they have not yet been parsed
      $pos = strpos($content, $searchstart, $startpos);
      $pos2 = strpos($content, $searchend, $startpos + 1);
      if( $pos !== false && $pos2 !== false )
      {
         # Extract compressed text from between stream tags and uncompress
         $textsection = substr($content, $pos + strlen($searchstart) + 2, $pos2 - $pos - strlen($searchstart) - 1);
         $data = @gzuncompress($textsection);
         # Clean up text via a special function
         $data = ExtractText($data);
         # Increase our PDF pointer past the section we just read
         $startpos = $pos2 + strlen($searchend) - 1;
         if( $data === false ) { return -1; }
         $pdfdocument = $pdfdocument . $data;
      }
   }

   return $pdfdocument;
}

function ExtractText($postScriptData)
{
   while( (($textStart = strpos($postScriptData, '(', $textStart)) && ($textEnd = strpos($postScriptData, ')', $textStart + 1)) && substr($postScriptData, $textEnd - 1) != '\\') )
   {
      $plainText .= substr($postScriptData, $textStart + 1, $textEnd - $textStart - 1);
      if( substr($postScriptData, $textEnd + 1, 1) == ']' ) // This adds quite some additional spaces between the words
      {
         $plainText .= ' ';
      }

      $textStart = $textStart < $textEnd ? $textEnd : $textStart + 1;
   }

   return stripslashes($plainText);
}
?>
 
Zuletzt bearbeitet:
Danke, auf das bin uach auch schon gestossen. Hat leider nicht funktioniert:(.
Aber trotzdem Danke für deine Bemühungen.
 

Ähnliche Themen