Simplify pdf-conversion by using in built methods which use poppler & imageMagick to convert pdfs to images.
linux: Ensure you have imagemagick and pdfImages installed
mac: Ensure you have imagemagick and poppler installed
windows: not supported
Poppler is very fast and shows results in milliseconds, however it's accuracy is low compared to image magick. If your pdf has images like for example images of of cards etc. then using poppler is a good idea, however if you have proper pdfs which are let's say converted from md files, then I would suggest using imagemagick.
const { Poppler } = require('pdf-images');
const result = Poppler.convert('/pdf/path/sample_pdf.pdf', 'output/directory/path', 'outputName'); // you can also add a 4th arguement which can specify the output image extension like jpg or jpeg
- A successfull result will look something like:
{
pdfPath: '/pdf/path/sample_pdf.pf',
outputImagesDirectory: '/output/directory/outputName/',
images: [
'/output/directory/outputName/outputName-001.png',
'/output/directory/outputName/outputName-002.png'
],
success: true
}
- An error response will look something like:
{
pdfPath: '/pdf/path/sample_pdf.pf',
error: <Err object>
}
- By default images have png extension
- you can also add a string of the args that you want to run with the imagemagick shell command. checkout
resultWithArgs
const { ImageMagick } = require('pdf-images');
const result = ImageMagick.convertAsync('/pdf/path/sample_pdf.pdf', 'output/directory/path', 'outputName');
const resultWithArgs = ImageMagick.convertAsync('/pdf/path/sample_pdf.pdf', 'output/directory/path', 'outputName', '-alpha background');
const resultWithDifferentExtension = ImageMagick.convertAsync(
'/pdf/path/sample_pdf.pdf',
'output/directory/path',
'outputName',
null,
'jpeg',
);
- A successfull result will look something like:
{
pdfPath: '/pdf/path/sample_pdf.pf',
outputImagesDirectory: '/output/directory/outputName/',
commandExecuted: 'convert -quiet -alpha background -density 200 -quality 100 /pdf/path/sample_pdf.pf /output/directory/outputName/outputName.jpeg',
images: [
'/output/directory/outputName/outputName-001.jpeg',
'/output/directory/outputName/outputName-002.jpeg'
],
success: true
}
const { ImageMagick } = require('pdf-images');
const result = ImageMagick.convert('/pdf/path/sample_pdf.pdf', 'output/directory/path', 'outputName'); // you can also add a 4th arguement which can specify the output image extension like jpg or jpeg
- A successfull result will look something like:
{
pdfPath: '/pdf/path/sample_pdf.pf',
outputImagesDirectory: '/output/directory/outputName/',
images: [
'/output/directory/outputName/outputName-001.png',
'/output/directory/outputName/outputName-002.png'
],
success: true
}
- An error response will look something like:
{
pdfPath: '/pdf/path/sample_pdf.pf',
error: <Err object>
}
- To set the density and quality of imagemagick use:
ImageMagick.setQuality(100);
ImageMagick.setDensity(200);
- Default ImageMagick quality is 100 and density is 200