[PHP]PDF uitlezen lukt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • van.der.schulting
  • Registratie: Juli 2002
  • Laatst online: 09-08-2024
Ik wil graag de tekst uitlezen uit een PDF. Een aantal PDF's gaan goed en een aantal niet.
Ik gebruik de functie pdf2string uit http://nl3.php.net/manual/en/ref.pdf.php

In de kern doe ik het volgende:
code:
1
2
3
       $fp = fopen($sourcefile, 'r');
       $content = fread($fp, filesize($sourcefile));
       fclose($fp);


Bij een bepaalde PDF krijg ik er alleen maar onleesbare troep, terwijl als ik in Foxit PDF reader klik op 'text viewer', krijg ik keurig platte tekst te zien die ik kan selecteren.
Ik heb echt geen idee waar ik het zoeken moet. Heb ik bijvoorbeeld een bepaalde library nodig of moet ik een PDF openen met een bepaalde parameter?

Acties:
  • 0 Henk 'm!

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

Kun je wel tekst selecteren in die pdf's. Ik heb zo'n vermoeden dat het tekst in een plaatje is waar je dan naar kijkt

Iperf


Acties:
  • 0 Henk 'm!

  • van.der.schulting
  • Registratie: Juli 2002
  • Laatst online: 09-08-2024
fish schreef op zaterdag 05 maart 2011 @ 22:17:
Kun je wel tekst selecteren in die pdf's. Ik heb zo'n vermoeden dat het tekst in een plaatje is waar je dan naar kijkt
Nee, als ik de platte tekst weergeef in Foxit reader, kan ik de tekst ook selecteren... Er zit dus echt tekst in de PDF...

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 14-07 21:33

NMe

Quia Ego Sic Dico.

Als de server waarmee je werkt xpdf heeft zou je kunnen kijken naar het shellcommando pdftotext. Ik heb toevallig afgelopen week nog hetzelfde probleem gehad en dat was voor mij de beste oplossing. :)

[ Voor 35% gewijzigd door NMe op 06-03-2011 00:06 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • van.der.schulting
  • Registratie: Juli 2002
  • Laatst online: 09-08-2024
Het is een oplossing, maar 2 problemen:
1. lokaal heb ik het werkend, maar of het voor de server werkt is een tweede ... iemand anders moet dit op de server installeren. Ik heb geen rechten.
2. pdftotext genereert een texfile. Die moet ik dan vervolgens weer inlezen. Dat is niet zo netjes. Het zou netter zijn als ik gewoon meteen een string terugkrijg en niet eerst een textfile aanmaak om meteen weer te verwijderen.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 14-07 21:33

NMe

Quia Ego Sic Dico.

van.der.schulting schreef op zondag 06 maart 2011 @ 00:52:
Het is een oplossing, maar 2 problemen:
1. lokaal heb ik het werkend, maar of het voor de server werkt is een tweede ... iemand anders moet dit op de server installeren. Ik heb geen rechten.
Hoeft niet per se een probleem te zijn natuurlijk. Ik heb zelf ook veel rond zitten kijken voor werkende scripts maar uiteindelijk hebben we toch maar xpdf geïnstalleerd op onze developmentserver (en straks dus ook op onze liveserver).
2. pdftotext genereert een texfile. Die moet ik dan vervolgens weer inlezen. Dat is niet zo netjes. Het zou netter zijn als ik gewoon meteen een string terugkrijg en niet eerst een textfile aanmaak om meteen weer te verwijderen.
Netter zou het wel zijn maar no such luck. Kwestie van die system call maken, checken of er uitvoer is gegenereerd (tweede parameter van de system functie wordt dan 1 geloof ik zo uit het hoofd) en zo ja: inlezen en unlinken. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • m-m
  • Registratie: Augustus 2001
  • Niet online

m-m

pdftotext heeft een optionele parameter voor de outputfilename, als je daar - meegeeft ipv een filename dan gooit hij de output naar stdout en kan je het dus makkelijker weer terugkrijgen in PHP zonder dat je moet klieren met een tijdelijk bestand.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 14-07 21:33

NMe

Quia Ego Sic Dico.

m-m schreef op zondag 06 maart 2011 @ 17:31:
pdftotext heeft een optionele parameter voor de outputfilename, als je daar - meegeeft ipv een filename dan gooit hij de output naar stdout en kan je het dus makkelijker weer terugkrijgen in PHP zonder dat je moet klieren met een tijdelijk bestand.
Thanks, scheelt mij ook weer een vertaalslag. :+

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
De functie die je gebruikt daar gaat ervan uit dat de tekst gzip-compressed is (zie onderstaande line of code), wat geen geldige aanname is (er zijn wel meer compressiemethoden mogelijk in een PDF).

PHP:
1
$data = @gzuncompress($textsection);

Probeer daarrond eens te debuggen (e.g. kijken wat voor compressiemethode in de PDF wordt aangegeven, eens $textsection outputten voordat het ge-gunzipt wordt, etc.)

If you can't beat them, try harder


Acties:
  • 0 Henk 'm!

  • van.der.schulting
  • Registratie: Juli 2002
  • Laatst online: 09-08-2024
NMe schreef op zondag 06 maart 2011 @ 18:01:
[...]

Thanks, scheelt mij ook weer een vertaalslag. :+
Zo heb ik het ook uiteindelijk gedaan... misschien een beetje jammer dat je met een commandline tooltje moet werken, maar het geeft wel een werkbare oplossing...
Pagina: 1