marcbachmann / node-html-pdf

This repo isn't maintained anymore as phantomjs got dreprecated a long time ago. Please migrate to headless chrome/puppeteer.
MIT License
3.55k stars 544 forks source link

"html-pdf: Failed to load PhantomJS module. You have to set the path to the PhantomJS binary using \'options.phantomPath #437

Open ganeshmogare opened 6 years ago

ganeshmogare commented 6 years ago

hi ,i'm trying to use html-pdf module , but it throws "html-pdf: Failed to load PhantomJS module. You have to set the path to the PhantomJS binary using \'options.phantomPath" error ,
steps i tried to resolve : 1.installed html-pdf

  1. rm -rf node_modules/phantomjs-prebuilt (or npm uninstall phantomjs-prebuilt)
  2. npm install phantomjs-prebuilt@2.1.13 (andphantomjs-prebuilt@2.1.4)

but no use , it was throwing same error , then i assignedoptions.phantomPath to node_modules\phantomjs-prebuilt

after that it is throwing following error , please help

{"error":{"message":"spawn EACCES","stack":"Error: spawn EACCES\\n at _errnoException (util.js:1022:11)\\n at ChildProcess.spawn (internal/child_process.js:323:11)\\n at Object.exports.spawn (child_process.js:502:9)\\n at PDF.PdfExec [as exec] (/root/PGServerJs/node_modules/html-pdf/lib/pdf.js:88:28)\\n at PDF.PdfToFile [as toFile] (/root/PGServerJs/node_modules/html-pdf/lib/pdf.js:83:8)\\n

i tried to change the permissions of phantomjs , but still it is not working

jourdan-qe commented 6 years ago

Hi,

I'm facing the same issue. We're using version 2.1.0

Thank you for helping

varuntblr commented 5 years ago

try to install like I do......... Go to your node_modules folder through terminal and use the command "sudo node ./install.js" or "sudo node ./install.js -f"............ this will definitely install this module.....

ganeshpaiya commented 5 years ago

html-pdf: Failed to load PhantomJS module. You have to set the path to the PhantomJS binary using 'options.phantomPath' AssertionError [ERR_ASSERTION]: html-pdf: Failed to load PhantomJS module. You have to set the path to the PhantomJS binary using 'options.phantomPath' Sorry, an error has occured, Requested page not found!

Paul-JO commented 5 years ago

In my case this solved the issue: $ (sudo) npm link phantomjs-prebuilt

I am not an expert, but it seems that since html-pdf is installed globally you have to link these global installations to your project. So my installation looks like this:

$ (sudo) npm install html-pdf -g $ (sudo) npm link html-pdf $ (sudo) npm link phantomjs-prebuilt

If this is somehow not the real way to go, I would be happy about other suggestions as I am planning to use this for an upcoming project.

balaji4191 commented 5 years ago

Thanks @Paul-JO Working fine

Paul-JO commented 5 years ago

Great that it works @balaji4191 I noticed some issues after doing this when installing new packages as those linked packages do not contain repository fields in their package descriptions. To solve this one would need to remove the node_modules folder, install the new package and to link the html-pdf and phantomjs again.

stemtra commented 5 years ago

Are you using html-pdf on the frontend or the server? I've been using it on the server without any trouble but I just tried to use it on the frontend in order to save the data transfered (up to 1mb per generated PDF), and this error happened...

Venugopal619 commented 4 years ago

aa

Young6118 commented 4 years ago

I also encountered this problem.

VijayakumarManickam commented 4 years ago

I have Win10 and Node 6.11 and NPM 6.6.0-next.0 with html-pdf ^2.2.0 in my package.json for one of my projects. I too faced this error even after redoing npm install html-pdf. I just did a npm link html-pdf that resulted in d:\nodejs\html-pdf -> d:\nodejs\node_modules\html-pdf\bin\index.js > phantomjs-prebuilt@2.1.16 install d:\nodejs\node_modules\html-pdf\node_modules\phantomjs-prebuilt > node install.js PhantomJS not found on PATH Downloading https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-windows.zip Saving to C:\Users\vijaya.m\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.zip Receiving... [========================================] 99% Received 17767K total. Extracting zip contents Removing D:\nvm\v6.14.4\node_modules\html-pdf\node_modules\phantomjs-prebuilt\lib\phantom Copying extracted folder C:\Users\vijaya.m\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.zip-extract-1580985378446\phantomjs-2.1.1-windows -> D:\nvm\v6.14.4\node_modules\html-pdf\node_modules\phantomjs-prebuilt\lib\phantom Writing location.js file Done. Phantomjs binary available at D:\nvm\v6.14.4\node_modules\html-pdf\node_modules\phantomjs-prebuilt\lib\phantom\bin\phantomjs.exe + html-pdf@2.2.0 added 82 packages from 77 contributors in 79.333s

And pdf.create(...) works good now.

jdoose commented 4 years ago

An npm rebuild might be needed, see https://github.com/Medium/phantomjs, section "Cross-Platform Repositories". This was the reason, when we encountered this problem. See also pull request #555

NathanD14 commented 4 years ago

I'm using 2.1.16 and this worked for me npm install phantomjs-prebuilt@2.1.16 --update-binary

Nana7926 commented 4 years ago

First install phantomjs using, brew tap homebrew/cask brew cask install phantomjs

Try if "phantomjs -v" works.

If works, then type "which phantomjs", this is where the /path/to/phantomjs

Then edit /usr/local/bin/html-pdf > lib > pdf.js Add the line after "this.options = options || {}" this.options.phantomPath = "/path/to/phantomjs"

This solved the problem for me.

imvikaskohli commented 4 years ago

Install PhantomJs

https://www.vultr.com/docs/how-to-install-phantomjs-on-ubuntu-16-04 Check phantomjs --version -> O/p 2.1.1

Then in the htm-pdf module html-pdf -> lib -> pdf.js Add the line after "this.options = options || {}" this.options.phantomPath = "/usr/local/bin/phantomjs"

NeniEmSu commented 3 years ago

I have Win10 and Node 6.11 and NPM 6.6.0-next.0 with html-pdf ^2.2.0 in my package.json for one of my projects. I too faced this error even after redoing npm install html-pdf. I just did a npm link html-pdf that resulted in d:\nodejs\html-pdf -> d:\nodejs\node_modules\html-pdf\bin\index.js > phantomjs-prebuilt@2.1.16 install d:\nodejs\node_modules\html-pdf\node_modules\phantomjs-prebuilt > node install.js PhantomJS not found on PATH Downloading https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-windows.zip Saving to C:\Users\vijaya.m\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.zip Receiving... [========================================] 99% Received 17767K total. Extracting zip contents Removing D:\nvm\v6.14.4\node_modules\html-pdf\node_modules\phantomjs-prebuilt\lib\phantom Copying extracted folder C:\Users\vijaya.m\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.zip-extract-1580985378446\phantomjs-2.1.1-windows -> D:\nvm\v6.14.4\node_modules\html-pdf\node_modules\phantomjs-prebuilt\lib\phantom Writing location.js file Done. Phantomjs binary available at D:\nvm\v6.14.4\node_modules\html-pdf\node_modules\phantomjs-prebuilt\lib\phantom\bin\phantomjs.exe + html-pdf@2.2.0 added 82 packages from 77 contributors in 79.333s

And pdf.create(...) works good now.

This worked for me Running npm link html-pdf and getting the output as above.

md-abdul-halim-rafi commented 3 years ago

I have Win10 and Node 6.11 and NPM 6.6.0-next.0 with html-pdf ^2.2.0 in my package.json for one of my projects. I too faced this error even after redoing npm install html-pdf. I just did a npm link html-pdf that resulted in d:\nodejs\html-pdf -> d:\nodejs\node_modules\html-pdf\bin\index.js > phantomjs-prebuilt@2.1.16 install d:\nodejs\node_modules\html-pdf\node_modules\phantomjs-prebuilt > node install.js PhantomJS not found on PATH Downloading https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-windows.zip Saving to C:\Users\vijaya.m\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.zip Receiving... [========================================] 99% Received 17767K total. Extracting zip contents Removing D:\nvm\v6.14.4\node_modules\html-pdf\node_modules\phantomjs-prebuilt\lib\phantom Copying extracted folder C:\Users\vijaya.m\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.zip-extract-1580985378446\phantomjs-2.1.1-windows -> D:\nvm\v6.14.4\node_modules\html-pdf\node_modules\phantomjs-prebuilt\lib\phantom Writing location.js file Done. Phantomjs binary available at D:\nvm\v6.14.4\node_modules\html-pdf\node_modules\phantomjs-prebuilt\lib\phantom\bin\phantomjs.exe + html-pdf@2.2.0 added 82 packages from 77 contributors in 79.333s

And pdf.create(...) works good now.

This one helps me too. Thanks a ton @VijayakumarManickam

xoapit commented 3 years ago

In html-pdf option, we have a property phantomPath: `// File options "type": "pdf", // allowed file types: png, jpeg, pdf "quality": "75", // only used for types png & jpeg

// Script options "phantomPath": "./node_modules/phantomjs/bin/phantomjs", // PhantomJS binary which should get downloaded automatically "phantomArgs": [], // array of strings used as phantomjs args e.g. ["--ignore-ssl-errors=yes"] "localUrlAccess": false, // Prevent local file:// access by passing '--local-url-access=false' to phantomjs ` Ubuntu server cannot found phantom from node-modules so I had to install phantomjs by the script and pass the path '/usr/local/bin/phantomjs' to that option. It worked for me, very crazy issue.

The script to run in Docker file: RUN apk add --no-cache curl && \ cd /tmp && curl -Ls https://github.com/dustinblackman/phantomized/releases/download/2.1.1/dockerized-phantomjs.tar.gz | tar xz && \ cp -R lib lib64 / && \ cp -R usr/lib/x86_64-linux-gnu /usr/lib && \ cp -R usr/share /usr/share && \ cp -R etc/fonts /etc && \ curl -k -Ls https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 | tar -jxf - &&\ cp phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs && \ rm -fR phantomjs-2.1.1-linux-x86_64 && \ apk del curl

mir1198yusuf commented 2 years ago

In options of pdf.create(html,options) add below : "phantomPath": "./node_modules/phantomjs-prebuilt/bin/phantomjs",.

Notice I am mentioned phantomjs-prebuilt & not default phantomjs.

I was able to run thie library by above methods on all devices without any global installations.

scristian9 commented 2 years ago

Very thanks this solution work for me in serverless.

My steps were:

$ npm install phantomjs-prebuilt

pdf.create(html,{ "phantomPath": "./node_modules/phantomjs-prebuilt/bin/phantomjs" });

Then 🚀

ladaniavadh commented 2 years ago

I faced the same error and I downgrade my node version from v16.14.1 to v14.18.1 and it is working fo me now

czarjulius commented 11 months ago

This is how I resolved mine. I performed an upgrade on my Docker node, transitioning fromnode:16.15.0-slim to node:20.5.0. It's working perfectly now.

hypo-thesis commented 11 months ago

In options of pdf.create(html,options) add below : "phantomPath": "./node_modules/phantomjs-prebuilt/bin/phantomjs",.

Notice I am mentioned phantomjs-prebuilt & not default phantomjs.

I was able to run thie library by above methods on all devices without any global installations.

This was it for me although phantomPath: "./node_modules/phantomjs-prebuilt/bin/phantomjs"