diff --git a/Dockerfile b/Dockerfile index 6fe764827..b3e6f70b6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:2.5.5 +FROM ruby:2.5.5-stretch MAINTAINER BioSistemika # Get version of Debian (lsb_release substitute) and save it to /tmp/lsb_release for further commands @@ -20,7 +20,7 @@ RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - && \ postgresql-client \ default-jre-headless \ unison \ - ghostscript \ + poppler-utils \ sudo graphviz --no-install-recommends \ libfile-mimeinfo-perl && \ apt-get install -y --no-install-recommends -t $(cat /tmp/lsb_release)-backports libreoffice && \ diff --git a/Dockerfile.production b/Dockerfile.production index 0e6b5baa9..4e3a7617c 100644 --- a/Dockerfile.production +++ b/Dockerfile.production @@ -1,4 +1,4 @@ -FROM ruby:2.5.5 +FROM ruby:2.5.5-stretch MAINTAINER BioSistemika RUN echo deb "http://http.debian.net/debian stretch-backports main" >> /etc/apt/sources.list @@ -17,7 +17,7 @@ RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - && \ postgresql-client \ netcat \ default-jre-headless \ - ghostscript \ + poppler-utils \ sudo graphviz --no-install-recommends \ libfile-mimeinfo-perl && \ apt-get install -y --no-install-recommends -t stretch-backports libreoffice && \ diff --git a/lib/paperclip_processors/custom_file_preview.rb b/lib/paperclip_processors/custom_file_preview.rb index f6ea765e6..01e2b57cc 100644 --- a/lib/paperclip_processors/custom_file_preview.rb +++ b/lib/paperclip_processors/custom_file_preview.rb @@ -3,6 +3,7 @@ module Paperclip class CustomFilePreview < Processor def make + pdftoppm_path = ENV['PDFTOPPM_PATH'] || 'pdftoppm' libreoffice_path = ENV['LIBREOFFICE_PATH'] || 'soffice' directory = File.dirname(@file.path) basename = File.basename(@file.path, '.*') @@ -11,25 +12,22 @@ module Paperclip begin if @file.content_type == 'application/pdf' - # We use special convert options for PDFs to improve quality and - # background, we append [0] to convert only the first page - convert( - ":source -resize '#{options[:geometry]}' -format #{options[:format]} -flatten -quality 70 :dest", - source: File.expand_path(@file.path) + '[0]', - dest: File.expand_path(dst.path) + Paperclip.run( + pdftoppm_path, + "-singlefile -r 72 -png #{@file.path} #{File.join(directory, basename)}" ) else Paperclip.run( libreoffice_path, "--headless --invisible --convert-to png --outdir #{directory} #{@file.path}" ) - - convert( - ":source -resize '#{options[:geometry]}' -format #{options[:format]} #{options[:convert_options]} :dest", - source: File.expand_path(original_preview_file), - dest: File.expand_path(dst.path) - ) end + + convert( + ":source -resize '#{options[:geometry]}' -format #{options[:format]} #{options[:convert_options]} :dest", + source: File.expand_path(original_preview_file), + dest: File.expand_path(dst.path) + ) ensure File.delete(original_preview_file) if File.file?(original_preview_file) end