Blog Detail


How to Easily Extract Any Text From a Pdf in Laravel cover image

arrow_back How to Easily Extract Any Text From a Pdf in Laravel

Spatie has introduced a package called Pdf-to-text that can be utilized to extract some text from a pdf. There are already some packages that can be used for this purpose, But Pdf-to-text package is really easy to use so you can easily utilize this package in your application. Under the hood, Spatie used a utility called pdftotext in this package.


Behind the scenes, this package leverages pdftotext. You can verify if the binary is installed on your system by issuing this command:

which pdftotext

If it is installed it will return the path to the binary.

To install the binary you can use this command on Ubuntu or Debian:

apt-get install poppler-utils

On a mac you can install the binary using brew

brew install poppler

If you’re on RedHat or CentOS use this:

yum install poppler-utils


You can install the package via composer:

composer require spatie/pdf-to-text


Extracting text from a pdf is easy.

$text = (new Pdf())

Or easier:

echo Pdf::getText('book.pdf');

By default, the package will assume that the pdftotext command is located at /usr/bin/pdftotext. If it is located elsewhere pass its binary path to constructor

$text = (new Pdf('/custom/path/to/pdftotext'))

or as the second parameter to the getText static method:

echo Pdf::getText('book.pdf', '/custom/path/to/pdftotext');

Sometimes you may want to use pdftotext options. To do so you can set them up using the setOptions method.

$text = (new Pdf())
    ->setOptions(['layout', 'r 96'])

or as the third parameter to the getText static method:

echo Pdf::getText('book.pdf', null, ['layout', 'opw myP1$$Word']);

Please note that successive calls to setOptions() will overwrite options passed in during previous calls.

If you need to make multiple calls to add options (for example if you need to pass in default options when creating the Pdf object from a container, and then add context-specific options elsewhere), you can use the addOptions() method:

$text = (new Pdf())
    ->setOptions(['layout', 'r 96'])
    ->addOptions(['f 1'])

If you want to know more about this package you can visit its documentation and source code on Github.

Published at : 17-11-2021

Author : Rizwan Aslam
Rizwan Aslam

I am a highly results-driven professional with 12+ years of collective experience in the grounds of web application development especially in laravel, native android application development in java, and desktop application development in the dot net framework. Now managing a team of expert developers at Codebrisk.

Launch your project

Launch project