pdf2pic
Version:
A utility for converting pdf to image and base64 format.
199 lines (147 loc) • 6.62 kB
Markdown
# PDF2Pic
[![Donate][paypal-image]](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=938FMCPPQG4DQ¤cy_code=USD&source=url)
[![Build Status][travis-image]][travis-url]
[](https://www.codefactor.io/repository/github/yakovmeister/pdf2image/overview/next)
[](https://codeclimate.com/github/yakovmeister/pdf2image/maintainability)
[](https://codeclimate.com/github/yakovmeister/pdf2image/test_coverage)
[](https://packagephobia.com/result?p=pdf2pic)
[![NPM Version][npm-image]][npm-url]
[][npm-url]
[](https://snyk.io/test/npm/pdf2pic)
[![Downloads Stats][npm-downloads]][npm-url]
A utility for converting pdf to image and base64 format.
> IMPORTANT NOTE: Please support this library by donating via [PayPal](https://www.paypal.com/paypalme/yakovmeister), your help is much appreciated. Contributors are also welcome!
## Prerequisite
* node >= 12.x
* graphicsmagick
* ghostscript
### Don't have graphicsmagick and ghostscript yet?
Follow [this](docs/gm-installation.md) guide to install the required dependencies.
## Installation
```
npm install -S pdf2pic
```
## Usage
### Converting specific page of PDF from path, then saving as image file
```javascript
import { fromPath } from "pdf2pic";
const options = {
density: 100,
saveFilename: "untitled",
savePath: "./images",
format: "png",
width: 600,
height: 600
};
const storeAsImage = fromPath("/path/to/pdf/sample.pdf", options);
const pageToConvertAsImage = 1;
storeAsImage(pageToConvertAsImage).then((resolve) => {
console.log("Page 1 is now converted as image");
return resolve;
});
```
### Nuff talk, show me how:
More usage example can be found [here](https://github.com/yakovmeister/pdf2pic-examples).
## pdf2pic API
### fromPath(filePath, options)
Initialize PDF to image conversion by supplying a file path
#### Functions
Converts specific page of the PDF to Image/Base64 by supplying a file path
```javascript
fromPath(filePath, options).convert(pageNumber, isBase64)
```
* filePath - pdf file's path
* options - see [options](#options).
* pageNumber - page number to be converted to image
* isBase64 - if true, `convert()` will return base64 output instead
---
Converts PDF to Image/Base64 by supplying a file path
```javascript
fromPath(filePath, options).bulk(pageNumber, isBase64)
```
* filePath - pdf file's path
* options - see [options](#options).
* pageNumber - page number/s to be converted to images
* set `pageNumber` to `-1` to select all pages
* `pageNumber` also accepts an array indicating the page number e.g. `[1,2,3]`
* also accepts number e.g. `1`
* isBase64 - if true, `bulk()` will return an array of base64 output instead
---
Set GraphicsMagick's subclass or path
```javascript
fromPath(filePath, options).setGMClass(subClass)
```
NOTE: should be called before calling `convert()` or `bulk()`.
* filePath - pdf file's path
* options - see [options](#options).
* subClass - path to gm binary or set to true to use imagemagick
* set `subClass` to true to use imagemagick
* supply a valid path as `subClass` to locate gm path specified
---
### fromBuffer(buffer, options)
Initialize PDF to image conversion by supplying a PDF buffer
#### Functions
Converts specific page of the PDF to Image/Base64 by supplying a buffer
```javascript
fromBuffer(buffer, options).convert(pageNumber, isBase64)
```
Functions same as `fromPath(filePath, options).convert(pageNumber, isBase64)` only input is changed
---
Converts PDF to Image/Base64 by supplying a buffer
```javascript
fromBuffer(buffer, options).bulk(pageNumber, isBase64)
```
Functions same as `fromPath(filePath, options).bulk(pageNumber, isBase64)` only input is changed
---
Set GraphicsMagick's subclass or path
```javascript
fromBuffer(buffer, options).setGMClass(subClass)
```
Functions same as `fromPath(filePath, options).setGMClass(subClass)` only input is changed
---
### fromBase64(b64string, options)
Initialize PDF to image conversion by supplying a PDF base64 string
#### Functions
Converts specific page of the PDF to Image/Base64 by supplying a base64 string
```javascript
fromBase64(b64string, options).convert(pageNumber, isBase64)
```
Functions same as `fromPath(filePath, options).convert(pageNumber, isBase64)` only input is changed
---
Converts PDF to Image/Base64 by supplying a base64 string
```javascript
fromBase64(b64string, options).bulk(pageNumber, isBase64)
```
Functions same as `fromPath(filePath, options).bulk(pageNumber, isBase64)` only input is changed
---
Set GraphicsMagick's subclass or path
```javascript
fromBase64(b64string, options).setGMClass(subClass)
```
Functions same as `fromPath(filePath, options).setGMClass(subClass)` only input is changed
---
### options
Following are the options that can be passed on the pdf2pic api:
* quality - set output's image quality
* format - set output's file format
* width - set output's width
* height - set output's height
* density - controls output's dpi (i am not so sure)
* savePath - set output's save path
* saveFilename - set output's file name
* compression - set output's compression method
## Contributing
* Fork it (https://github.com/yakovmeister/pdf2image/fork)
* Create your feature branch (git checkout -b feature/make-maintainer-cry)
* Commit your changes (git commit -am 'feature: make maintainer cry by running git rm -rf')
* Push to the branch (git push origin feature/make-maintainer-cry)
* Create a new PR
## License
pdf2pic is [MIT licensed](LICENSE).
<!-- Markdown link & img dfn's -->
[npm-image]: https://img.shields.io/npm/v/pdf2pic.svg?style=flat-square
[npm-url]: https://www.npmjs.com/package/pdf2pic
[npm-downloads]: https://img.shields.io/npm/dm/pdf2pic.svg?style=flat-square
[travis-image]: https://travis-ci.org/yakovmeister/pdf2image.svg?branch=next
[travis-url]: https://travis-ci.org/yakovmeister/pdf2image
[paypal-image]: https://img.shields.io/badge/Donate-PayPal-green.svg