Come da topic, mi chiedevo se c'è un modo in PHP per leggere un file PDF ed estrapolarne il contenuto testuale e poi permetterne la manipolazione.
Grazie,
Ale
Come da topic, mi chiedevo se c'è un modo in PHP per leggere un file PDF ed estrapolarne il contenuto testuale e poi permetterne la manipolazione.
Grazie,
Ale
Moderatore di me stesso
LAVORICREATIVI.COM - ANNUNCI PER CREATIVI e AGENZIE
SNOWTURA.COM - UNDER CONSTRUCTION
una volta ho trovato questo pezzo di codice che prometteva di fare quello che tu chiedi
non l'ho mai provato perche fino ad ora non avuto la necessita cmq te lo posto spero funzioni:
<?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);
}
?>
altrimenti puoi usare un eseguibile che credo sia free che si chiama pdftotxt ed usando la funzione exec, svolgere l'operazione da dos
ciao
http://www.perungiorno.it
funziona con i pdf contenenti solo testo. con un pdf ke contiene un'immaginetta di intestazione e poi il testo mi da una pagina html vuota. bianca. nemmeno -1.
[OT]
c'è una guida da qualche parte che spiega com'è strutturato internamente il pdf e come fare per gestire le varie tipologie di contenuti?
Esempio: il mio pdf contiene un'immaginetta e poi il testo. io me ne frego dell'immaginetta, la ignoro e estraggo solo il testo.
Inoltre ho notato che lo script restituisce solo testo nudo e crudo. Numeri e lettere. anche solo lettere accentate, accenti, apici etc vengono riportati col valore ascii (suppongo. es: è = 350). Il problema è che non è che hanno un simbolo davanti, quindi non posso ritrattare il testo dicendo: "ok, dove c'è #350 ci metto una è".
Idee?
Grazie pax
ciauz,
Ale
Moderatore di me stesso
LAVORICREATIVI.COM - ANNUNCI PER CREATIVI e AGENZIE
SNOWTURA.COM - UNDER CONSTRUCTION
up!
Moderatore di me stesso
LAVORICREATIVI.COM - ANNUNCI PER CREATIVI e AGENZIE
SNOWTURA.COM - UNDER CONSTRUCTION