Rudolf: PDF über PHP/... auslesen

Hallo,

ich würde gerne aus Microsoft Word / Excel oder Libre Office exportierte PDF-Dateien über ein PHP Backend wieder lesbar machen.

Sehe hier zugegebenermaßen den Wald vor lauter Bäumen nicht, und würde daher gerne wissen, ob das ein trivialer Vorgang ist oder doch tiefergreifende seelische Wunden zu hinterlassen im Stande ist.

Bin naturgemäß bald auf XPDF gestoßen.

...lässt sich so etwas auch mit einem Shared Hosting Account bewerkstelligen oder benötige ich weitergehende Zugriffsrechte auf den Server (zwecks Installation, etc.)?

Danke für erste Einschätzungen!

LG, Rudolf

  1. Servus!

    Hallo,

    ich würde gerne aus Microsoft Word / Excel oder Libre Office exportierte PDF-Dateien über ein PHP Backend wieder lesbar machen.

    Da gibt es viele PHP-Skripte (z.B.: https://github.com/topics/pdf-reader), die du in Dein Backend einbinden kannst . Wenn Du ein CMS verwendest, kannst du evtl. ein fertiges Plugin nutzen. Wenn du etwas Selbstgebautes hast, musst du Dir etwas programmieren.

    Bin naturgemäß bald auf XPDF gestoßen.

    Und das ist eben ein Programm, das auf „normalen“ Computern mit Linux, Windows oder Apple-Bestriebsystemen installiert und aufgerufen werden kann, aber nicht auf einem Server.

    Ein Server ist ein Computer, der ein anderes Betriebssystem hat, meist XAMPP - oder etwas anderes. Hier laufen keine .exe-Programme, sondern eben PHP oder eine andere Programmiersprache (z.B. JavaScript /Node.js).

    ...lässt sich so etwas auch mit einem Shared Hosting Account bewerkstelligen oder benötige ich weitergehende Zugriffsrechte auf den Server (zwecks Installation, etc.)?

    Normalerweise hat Dein Shared Hosting PHP und das Zugriffsrecht auf Bilder und PDF-Dateien. Das ist eher nicht das Problem.

    Wie fange ich an? Web-Hosting

    Herzliche Grüße

    Matthias Scharwies

    --
    Die Signatur findet sich auf der Rückseite des Beitrags.
    1. Da gibt es viele PHP-Skripte (z.B.: https://github.com/topics/pdf-reader), die du in Dein Backend einbinden kannst .

      Da war kein einziges PHP Skript für allgemeine Konvertierungszwecke dabei 😆

      was heißt denn in Deinem Kontext lesbar?

      Optimalerweise wäre natürlich ein bereits wohlgeformtes standardisiertes Ausgabeformat (aka JSON) erstrebenswert.

      Sehe aber ein, dass das so seine groben Denkfehler hat, da z.B. ein Word Dokument per se eben nicht aus einem JSON Format in eine PDF konvertiert wurde.

      Was mir da als Endausgabe nun genau schimpfend entgegenspu(c)kt ist daher sekundär, so long as die Resultate mich nicht in Binary verprügeln, sondern irgendwie lesbar sind - mit anderen Worten:

      Schreibe ich "Hello World!" in ein WORD / Open Office und verpacke es in einer schönen PDF mit Mascherl oben drauf, sollte in der Textausgabe dieser PDF wieder irgendwo "Hello World!" zu finden sein (den Rest scrape ich mir dann schon irgendwie zusammen...)

      1. Hallo Rudolf,

        ich habe mir vorhin mal ein Mini-Exceldokument zusammengetippt ("Hallo Welt" war auch drin, dann die Zahlen 1 bis 5 und eine Summe über diese Zellen).

        Das PDF enthielt eine Masse Binärkram, da war nämlich ein Font eingebettet, aber meine Zahlen und das Hallo Welt habe ich nicht gefunden.

        PDF kann die Originaltexte enthalten, es kann aber auch irgendwas verqueres sein, das lediglich so dargestellt wird wie der Originaltext. Es ist ein Druckformat, kein Datenformat.

        Die zuverlässigste Methode ist vermutlich ein OCR-Programm.

        Rolf

        --
        sumpsi - posui - obstruxi
        1. Moin Rolf,

          ich habe mir vorhin mal ein Mini-Exceldokument zusammengetippt ("Hallo Welt" war auch drin, dann die Zahlen 1 bis 5 und eine Summe über diese Zellen).

          Das PDF enthielt eine Masse Binärkram, da war nämlich ein Font eingebettet, aber meine Zahlen und das Hallo Welt habe ich nicht gefunden.

          Das wird vermutlich komprimiert sein – man findet mehrfach den /FlatDecode-Operator, wenn man das nachstellt.

          Viele Grüße
          Robert

      2. Schreibe ich "Hello World!" in ein WORD / Open Office und verpacke es in einer schönen PDF mit Mascherl oben drauf, sollte in der Textausgabe dieser PDF wieder irgendwo "Hello World!" zu finden sein (den Rest scrape ich mir dann schon irgendwie zusammen...)

        Die meisten dieser Programme heißen so, „wie sie tun“:

        Google php pdf2text pdftotext

        Erster Treffer:

        https://github.com/cpierce/pdf2text/blob/main/src/Pdf2text/Pdf2text.php

        Nutzung/Einbindung:

        https://github.com/cpierce/pdf2text/tree/main

        Hinweis: Bei manchen, womöglich vielen PDFs wird das (wahrscheinlich) nicht funktionieren, da brauchst Du ocr, weil der Text da als Grafik drin ist… und für ocr sieht mir das „deutlich zu klein“ aus.

        So richtig „vertrauensgewürzig“ ist das aber nicht, weil z.B. jeder Angabe zur PHP-Version, unter der das läuft, (und ggf. benötigten PHP-Libs) fehlt.

    2. Aloha ;)

      Bin naturgemäß bald auf XPDF gestoßen.

      Und das ist eben ein Programm, das auf „normalen“ Computern mit Linux, Windows oder Apple-Bestriebsystemen installiert und aufgerufen werden kann, aber nicht auf einem Server.

      Ein Server ist ein Computer, der ein anderes Betriebssystem hat, meist XAMPP - oder etwas anderes. Hier laufen keine .exe-Programme, sondern eben PHP oder eine andere Programmiersprache (z.B. JavaScript /Node.js).

      Moment, da gehen jetzt die Begrifflichkeiten und Konzepte stark durcheinander.

      XAMPP ist kein Betriebssystem, sondern ein Softwarepaket, das die softwareseitigen Komponenten des Webservers bereitstellt, insb. den Server selbst (in diesem Fall Apache), das PHP-Modul und eine Datenbank.

      Das ganze läuft trotzdem auf einem Server (Hardware), auf dem ein ganz normales Betriebssystem (meist Linux, teilweise auch Windows) läuft.

      Prinzipiell ist auf einem solchen Server, so er mit Windows läuft, auch eine .exe-Datei ausführbar (z.B. mit PHP: exec()), oder, falls der Server unter Linux läuft, ist die Linux-Variante des Programms ggf. ausführbar.

      Soweit Zugriff und Installationsmöglichkeiten auf dem Server bestehen, ist da auch XPDF ausführbar.

      Dass es andere, ggf. sinnvollere, Möglichkeiten gibt, darauf haben andere schon verwiesen.

      ...lässt sich so etwas auch mit einem Shared Hosting Account bewerkstelligen oder benötige ich weitergehende Zugriffsrechte auf den Server (zwecks Installation, etc.)?

      Normalerweise hat Dein Shared Hosting PHP und das Zugriffsrecht auf Bilder und PDF-Dateien. Das ist eher nicht das Problem.

      Doch, Shared Webhosting ist das zentrale Problem. Bei einem Shared Webhosting besteht nämlich im Allgemeinen eben keine Möglichkeit, beliebige ausführbare Dateien ins Serversystem zu integrieren und per PHP aufzurufen, im Fall eines shared Webhosting ist per exec üblicherweise nur ein Set von Standardtools verfügbar.

      Also: XPDF (und andere Programme) können auf einem Webserver eine Option sein. Im Normalfall, der die Meisten betrifft - nämlich beim Shared Webhosting - ist das aber gerade nicht der Fall.

      Grüße,

      RIDER

      --
      Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Albers-Zoller
      # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[
  2. Moin Rudolf,

    ich würde gerne aus Microsoft Word / Excel oder Libre Office exportierte PDF-Dateien über ein PHP Backend wieder lesbar machen.

    was heißt denn in Deinem Kontext lesbar?

    Viele Grüße
    Robert

    1. Moin Rudolf,

      was heißt denn in Deinem Kontext lesbar?

      Optimalerweise wäre natürlich ein bereits wohlgeformtes standardisiertes Ausgabeformat (aka JSON) erstrebenswert.

      Sehe aber ein, dass das so seine groben Denkfehler hat, da z.B. ein Word Dokument per se eben nicht aus einem JSON Format in eine PDF konvertiert wurde.

      Ich frage anders herum:

      Welches ist dein Ausgangsformat für das Konvertieren – ein Office-Format oder PDF?

      Office-Formate kannst Du direkt in weiterverarbeitbare Formate konvertieren, das wäre viel einfacher als

      • PDF erzeugen
      • PDF wieder parsen.

      Was mir da als Endausgabe nun genau schimpfend entgegenspu(c)kt ist daher sekundär, so long as die Resultate mich nicht in Binary verprügeln, sondern irgendwie lesbar sind

      Binary bekommst Du mittlerweile aber tendenziell eher mit PDF als mit modernen Office-Formaten.

      Viele Grüße
      Robert

  3. Moin,

    an dieser Stelle hätte ich Dir vermutlich erstmal einen PDF-parser empfohlen.

    Schwierig wird es aber z.b. schon, wenn Dein PDF Bilder enthält, da ist dann solch ein Tool überfordert, es reicht nur für einfach Text-PDFs.

    Eventuell könntest Du darüber nachdenken, aus Deinem gesamten PDF ein Bild zu generieren (Tool wie pdftoppm (Teil von Poppler) oder ImageMagick, um die PDF-Seiten in Bilddateien (z.B. PNG) umzuwandeln) und es anschließend mit einem Tool wie Tesseract auszulesen.

    Habe damit aber keine eigenen Erfahrungen gemacht, wollte nur eine Idee in den virtuellen Raum werfen.

    Wenn es um reinen GText geht, würde ich PDF-parser ausprobieren.

    Hank