↖️ Show all posts

use minimagick convert pdf frontpage to png

Use your majestic brain waves to figure out how where to get the pdf content from. Then refactor the code to your needs. This is just a snippet.

def to_pdf_preview_png_base64
  begin
    base64string = ""
    Tempfile.create(["filename_randomized", '.png'], binmode: true) do |temp_png_file|
      Tempfile.create(["filename_randomized", '.pdf'], binmode: true) do |temp_pdf_file|
        temp_pdf_file.write(pdf_content) # << you know where to get this from
        pdf = MiniMagick::Image.open(temp_pdf_file.path)

        png_file = MiniMagick::Tool::Convert.new do |convert|
          convert.background "white"
          convert.flatten
          convert.density 150
          convert.quality 100
          convert.format "png"
          convert << pdf.pages.first.path
          convert << temp_png_file.path
        end
        png_contents = File.binread(temp_png_file.path)
        base64string = "data:image/png;base64,#{Base64.encode64(png_contents)}"
      end
    end
    base64string
  rescue => e
    puts e
    # empty pixel https://png-pixel.com/
    "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg== "
  end
end

⬅️ Read previous Read next ➡️