Sha256: e81158845ffd7e7b2273ebd7e21ca51e6968c3efd4b1d676080b841041a8268a

Contents?: true

Size: 1.06 KB

Versions: 169

Compression:

Stored size: 1.06 KB

Contents

require 'English'

module PgEngine
  class PdfPreviewGenerator
    def open_tempfile
      FileUtils.mkdir_p('tmp')
      tempfile = Tempfile.open('PgEnginePdfPreview-', 'tmp')

      begin
        yield tempfile
      ensure
        tempfile.close
        tempfile.unlink
      end
    end

    def capture(*argv, to:)
      to.binmode

      open_tempfile do |err|
        IO.popen(argv, err:) { |out| IO.copy_stream(out, to) }
        err.rewind

        unless $CHILD_STATUS.success?
          raise "#{argv.first} failed (status #{$CHILD_STATUS.exitstatus}): #{err.read.to_s.chomp}"
        end
      end

      to.rewind
    end

    def draw(*argv)
      open_tempfile do |file|
        capture(*argv, to: file)

        yield file
      end
    end

    def run(pdf_string)
      open_tempfile do |tmp_pdf_file|
        tmp_pdf_file.binmode
        tmp_pdf_file.write pdf_string
        tmp_pdf_file.close
        draw 'pdftoppm', '-singlefile', '-cropbox', '-r', '72', '-png', tmp_pdf_file.path do |file|
          return file.read
        end
      end
    end
  end
end

Version data entries

169 entries across 169 versions & 1 rubygems

Version Path
pg_rails-7.6.30 pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
pg_rails-7.6.29 pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
pg_rails-7.6.28 pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
pg_rails-7.6.27 pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
pg_rails-7.6.26 pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
pg_rails-7.6.25 pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
pg_rails-7.6.24 pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
pg_rails-7.6.24.pre.5 pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
pg_rails-7.6.24.pre.4 pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
pg_rails-7.6.24.pre.3 pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
pg_rails-7.6.23 pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
pg_rails-7.6.22 pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
pg_rails-7.6.22.pre.3 pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
pg_rails-7.6.22.pre.2 pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
pg_rails-7.6.22.pre.1 pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
pg_rails-7.6.21 pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
pg_rails-7.6.21.pre.11 pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
pg_rails-7.6.21.pre.10 pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
pg_rails-7.6.21.pre.9 pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
pg_rails-7.6.21.pre.8 pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb