# PDF to Image with external node.js package

**URL:** <https://discourse.nodered.org/t/pdf-to-image-with-external-node-js-package/45297>\
**Category:** General\
**Created:** [6 May 2021 20:14 UTC](https://discourse.nodered.org/t/pdf-to-image-with-external-node-js-package/45297 "2021-05-06T20:14:44Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![gdevilliers](https://avatars.discourse-cdn.com/v4/letter/g/8e8cbc/32.png) [@gdevilliers](https://discourse.nodered.org/u/gdevilliers)\
**Post date:** [6 May 2021 20:14 UTC](https://discourse.nodered.org/t/pdf-to-image-with-external-node-js-package/45297/1 "2021-05-06T20:14:44Z")

</div>

Hi Guys, I am trying to convert a pdf to image using the pdf-image ([pdf-image - npm](https://www.npmjs.com/package/pdf-image)) package. I have installed the dependencies and modified the settings.js file accordingly. No errors during restart. The challenge I have now is that when using the package in a function node I get a "TypeError: PDFImage is not a function" error. Code in function node is only:

var PDFImage = global.get('pdf-image');  
var pdfImage = PDFImage(msg.payload);

Any ideas would be much appreciated. Thanks

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [6 May 2021 20:34 UTC](https://discourse.nodered.org/t/pdf-to-image-with-external-node-js-package/45297/2 "2021-05-06T20:34:20Z")

</div>

> [@gdevilliers](#):
>
> Any ideas would be much appreciated. Thanks

The readme says...

```js
var PDFImage = require("pdf-image").PDFImage;
 
var pdfImage = new PDFImage("/tmp/slide.pdf");
pdfImage.convertFile().then(function (imagePaths) {
  // [/tmp/slide-0.png, /tmp/slide-1.png]
});
 

```

Depending on how you did the require in settings.js you might need to do something like...

```auto
var PDFImage = global.get('pdf-image').PDFImage;
var pdfImage = new PDFImage(... Etc)

```

What does this show you?

```auto
var PDFImage = global.get('pdf-image');
node.warn(PDFImage)

```

---

<div class="post-metadata">

**Author:** ![gdevilliers](https://avatars.discourse-cdn.com/v4/letter/g/8e8cbc/32.png) [@gdevilliers](https://discourse.nodered.org/u/gdevilliers)\
**Post date:** [6 May 2021 20:44 UTC](https://discourse.nodered.org/t/pdf-to-image-with-external-node-js-package/45297/3 "2021-05-06T20:44:01Z")

</div>

Thanks for the reply Steve, the node.warn(PDFImage) throws no errors. So thats loading correctly. I also understand that I might be trying to use this package incorrectly as I have a buffer or Base64 that I want to convert and not necessarily provide a file location.

Require was done as follows:

```auto
functionGlobalContext: {
        PDFImage:require('pdf-image')
 }

```

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [6 May 2021 20:49 UTC](https://discourse.nodered.org/t/pdf-to-image-with-external-node-js-package/45297/4 "2021-05-06T20:49:54Z")

</div>

> [@gdevilliers](#):
>
> Thanks for the reply Steve, the node.warn(PDFImage) throws no errors.

Ok, but do you see an object in the debug output containing `.PDFImage`?

As for using it with a buffer or base64 string, check the repo or ask in the issues.

---

<div class="post-metadata">

**Author:** ![gdevilliers](https://avatars.discourse-cdn.com/v4/letter/g/8e8cbc/32.png) [@gdevilliers](https://discourse.nodered.org/u/gdevilliers)\
**Post date:** [6 May 2021 20:53 UTC](https://discourse.nodered.org/t/pdf-to-image-with-external-node-js-package/45297/5 "2021-05-06T20:53:27Z")

</div>

No object no, it only says "undefined"

![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/b/a/baa8e93586fdf55d5aa6b4262761061dc161aefe.png)

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [6 May 2021 20:54 UTC](https://discourse.nodered.org/t/pdf-to-image-with-external-node-js-package/45297/6 "2021-05-06T20:54:10Z")

</div>

Then I don't think it is loading.

What version of node-red are you running?

---

<div class="post-metadata">

**Author:** ![gdevilliers](https://avatars.discourse-cdn.com/v4/letter/g/8e8cbc/32.png) [@gdevilliers](https://discourse.nodered.org/u/gdevilliers)\
**Post date:** [6 May 2021 20:55 UTC](https://discourse.nodered.org/t/pdf-to-image-with-external-node-js-package/45297/7 "2021-05-06T20:55:59Z")

</div>

Currently running Node-red v1.3.4

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [6 May 2021 20:57 UTC](https://discourse.nodered.org/t/pdf-to-image-with-external-node-js-package/45297/8 "2021-05-06T20:57:11Z")

</div>

In which case, you can use the new feature functionexternalmodules instead...

[https://nodered.org/docs/user-guide/writing-functions#using-the-functionexternalmodules-option](https://nodered.org/docs/user-guide/writing-functions#using-the-functionexternalmodules-option)

---

<div class="post-metadata">

**Author:** ![gdevilliers](https://avatars.discourse-cdn.com/v4/letter/g/8e8cbc/32.png) [@gdevilliers](https://discourse.nodered.org/u/gdevilliers)\
**Post date:** [6 May 2021 21:12 UTC](https://discourse.nodered.org/t/pdf-to-image-with-external-node-js-package/45297/9 "2021-05-06T21:12:02Z")

</div>

Brilliant thanks. I implemented the functionexternalmodules feature and can see that it loads correctly now:

![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/8/c/8ce0bc90d1dde6e323493751bcabbe056c231826.png)

However when trying to use the function I still get the "TypeError: PDFImage is not a constructor" error. only code I have in my function node now is:

```auto
var pdfImage = new PDFImage(msg.payload);
return msg;

```

Where msg.payload is a .pdf buffer. Also tried pointing to a pdf location as in the readme files but get the same error unfortunately

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [6 May 2021 21:29 UTC](https://discourse.nodered.org/t/pdf-to-image-with-external-node-js-package/45297/10 "2021-05-06T21:29:05Z")

</div>

Try...

```auto
var pdfImage = new PDFImage.PDFImage(msg.payload);
... Do something with it / read the docs

```

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [5 July 2021 21:29 UTC](https://discourse.nodered.org/t/pdf-to-image-with-external-node-js-package/45297/11 "2021-07-05T21:29:17Z")

</div>

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.
