I have a large PDF file that is a floor map for a building. It has layers for all the office furniture including text boxes of seat location.
My goal is to read this file with PHP, search the document for text layers, get their contents and coordinates in the file. This way I can map out seat locations -> x/y coordinates.
Is there any way to do this via PHP? (Or even Ruby or Python if that’s what’s necessary)
Check out FPDF (with FPDI):
These will let you open an pdf and add content to it in PHP. I’m guessing you can also use their functionality to search through the existing content for the values you need.
Another possible library is TCPDF: http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf
Update to add a more modern library: PDF Parser
There is a php library (pdfparser) that does exactly what you want.
After including pdfparser in your project you can get all text from
mypdf.pdf like so:
<?php $parser = new \installpath\PdfParser\Parser(); $pdf = $parser->parseFile('mypdf.pdf'); $text = $pdf->getText(); echo $text;//all text from mypdf.pdf ?>
Simular you can get the metadata from the pdf as wel as getting the pdf objects (for example images).
Not exactly php, but you could exec a program from php to convert the pdf to a temporary html file and then parse the resulting file with php. I’ve done something similar for a project of mine and this is the program I used:
The resulting HTML wraps text elements in < div > tags with absolute position coordinates. It seems like this is exactly what you are trying to do.
your initial request is “I have a large PDF file that is a floor map for a building. ”
I am afraid to tell you this might be harder than you guess.
Cause the last known lib everyones use to parse pdf is smalot, and this one is known to encounter issue regarding large file.
Here too, Lookig for a real php lib to parse pdf, without any memory peak that need a php configuration to disable memory limit as lot of “developers” does (which I guess is really not advisable).
see this post for more details about smalot performance : https://github.com/smalot/pdfparser/issues/163