Unable to select text in pdf when downloading from NGINX server

Viewed 23

I have the following code in a NodeJS app using the library node-html-pdf:

pdf.create(PDF_html).toStream((err, pdfStream) => {
    if (err) {   
        console.log(err)
        return res.sendStatus(500)
    } else {
        res.statusCode = 200             
        res.setHeader('Content-type', 'application/pdf')
        res.attachment() 
        pdfStream.on('end', () => {
            return res.end()
        })

        pdfStream.pipe(res)
    }
})

On the client side I am using fetch to retrieve and download the PDF using the following code:

document.getElementById('pdf_button').addEventListener("click", function() {
    let query_nr = ''
    let query_spnr = ''       
    let url = 'https://{my.public.server.url}/getPDF/'
    fetch(url, {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
    },
        body: JSON.stringify({
        "nr": query_nr,
        "spnr": query_spnr
    })
    })
    .then((response) => response.blob())
    .then((blob) => {
        blob = new Blob([blob], {type: "application/pdf"});
        const objectURL = URL.createObjectURL(blob);
        const a = document.createElement("a")
        document.body.appendChild(a)
        a.style = "display: none"
        a.href = objectURL
        a.type = 'application/pdf'
        a.download = query_nr + '-' + query_spnr + '.pdf'
        console.log(a);
        a.click()
        // window.open(objectURL, '_blank');
    })
    .catch((error) => {
        console.error(error);      
    })          
});

The above code works fine as long I am using localhost as url, and I am able to select text from the downloaded text.

When I download the PDF from the server it seems like the whole PDF-file gets converted to an image (I might be very wrong), and I am not able to select any text.

Does anyone know how I can fix this? And why is this happening?

0 Answers
Related