Combine multiple images into one PDF
You photographed a stack of contracts, receipts or homework and want to send them as one PDF. That is what this tool is for: it places the images you pick onto A4 portrait pages, one image per page, and exports a file called images.pdf. It only combines. It does not crop, rotate, compress or run OCR, so the pages contain pictures and the text in them cannot be selected.
Pages are always A4 portrait (about 595 by 842 pt) with a 20 pt margin on every side, and the image is scaled proportionally and centred. Working through the code's formula, a 4000 by 3000 landscape photo comes out at roughly 555 by 416 pt, leaving a lot of empty space above and below, while a 3000 by 4000 portrait photo comes out at roughly 555 by 740 pt. Landscape images do not switch the page to landscape. The scale factor has no upper bound, so a small image is enlarged to fill the available width and will look soft.
Page order is exactly the order of the thumbnails, and there is no drag-to-reorder. If something is out of place you must remove it and add it again, but re-added images land at the end, so in practice you remove everything after the mistake and add those files back in the right sequence. Within a single multi-select, the order depends on what the system file picker returns and may not match filenames, so check the numbers after adding.
Most likely one of the images cannot be decoded. Remove them one at a time to find it, or convert it to JPG or PNG first and add it again.
The tool never rotates pages or images. If you want the picture to fill the page, rotate it to portrait in your photo app before adding it.
Not here. Removing and re-adding pushes an image to the end, so the safest approach is to add files in their final order, or to reorder the finished PDF with the site's PDF Page Reorder tool.
No. The code contains no upload requests; images are read through temporary local browser addresses and the PDF is built on your machine. The jsPDF library is loaded the first time you click Generate, and it is served with the site itself, not from a third-party server.