pdfbase64imagemagickmagick

How to use ImageMagick to output the base64 from each pages of a PDF


I'm trying to output each pages of a PDF in a base64 string with ImageMagick.

When I do magick /mypdf.pdf INLINE:PNG:-, it returns only the base64 output for the first page of the pdf document.

However, when magick /mypdf.pdf /convertInPng.png is performed, each page of the pdf document is created (like convertInPng-0.png, convertInPng-1.png...)

Is there a way to get all the pages with the INLINE:Format:- ?


Solution

  • I'm not certain what you expect exactly, but hopefully this will get you started.

    First, create a 2-page PDF, first page red, second page blue:

    magick -size 640x480 xc:red xc:blue a.pdf
    

    Now run your command and see that you only get a single base64-encoded PNG out:

    magick a.pdf -adjoin inline:png:
    data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgAQMAAAAPH06nAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAGUExURf8AAP///0EdNBEAAAABYktHRAH/Ai3eAAAACXBIWXMAAABIAAAASABGyWs+AAAAB3RJTUUH6QINCiEaCV8CGAAAAD1JREFUeNrtwQENAAAAwqD3T20ON6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4M8Al+AAAUvMG0oAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjUtMDItMTNUMTA6MzM6MjYrMDA6MDBT4OZBAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDI1LTAyLTEzVDEwOjMzOjI2KzAwOjAwIr1e/QAAACh0RVh0ZGF0ZTp0aW1lc3RhbXAAMjAyNS0wMi0xM1QxMDozMzoyNiswMDowMHWofyIAAAAgdEVYdHBkZjpIaVJlc0JvdW5kaW5nQm94ADY0MHg0ODArMCsw1zYEzQAAABR0RVh0cGRmOlZlcnNpb24AUERGLTEuMyBTBqy/AAAAAElFTkSuQmCC
    

    Now add +adjoin to concatenate outputs together:

    magick a.pdf +adjoin inline:png:
    data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgAQMAAAAPH06nAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAGUExURf8AAP///0EdNBEAAAABYktHRAH/Ai3eAAAACXBIWXMAAABIAAAASABGyWs+AAAAB3RJTUUH6QINCiEiIV26hgAAAD1JREFUeNrtwQENAAAAwqD3T20ON6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4M8Al+AAAUvMG0oAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjUtMDItMTNUMTA6MzM6MzQrMDA6MDAI1ff2AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDI1LTAyLTEzVDEwOjMzOjM0KzAwOjAweYhPSgAAACh0RVh0ZGF0ZTp0aW1lc3RhbXAAMjAyNS0wMi0xM1QxMDozMzozNCswMDowMC6dbpUAAAAgdEVYdHBkZjpIaVJlc0JvdW5kaW5nQm94ADY0MHg0ODArMCsw1zYEzQAAABR0RVh0cGRmOlZlcnNpb24AUERGLTEuMyBTBqy/AAAAAElFTkSuQmCCdata:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgAQMAAAAPH06nAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAGUExURQAA/////3vcmSwAAAABYktHRAH/Ai3eAAAACXBIWXMAAABIAAAASABGyWs+AAAAB3RJTUUH6QINCiEiIV26hgAAAD1JREFUeNrtwQENAAAAwqD3T20ON6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4M8Al+AAAUvMG0oAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjUtMDItMTNUMTA6MzM6MzQrMDA6MDAI1ff2AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDI1LTAyLTEzVDEwOjMzOjM0KzAwOjAweYhPSgAAACh0RVh0ZGF0ZTp0aW1lc3RhbXAAMjAyNS0wMi0xM1QxMDozMzozNCswMDowMC6dbpUAAAAgdEVYdHBkZjpIaVJlc0JvdW5kaW5nQm94ADY0MHg0ODArMCsw1zYEzQAAABR0RVh0cGRmOlZlcnNpb24AUERGLTEuMyBTBqy/AAAAAElFTkSuQmCC
    

    Hopefully you can now see that the output not only starts with a PNG, i.e. data:image/png;base64,iVBOR... but that there is also a second PNG appended to it.