Sha256: dde2bb616c1b29a09ffb54f5e7b6800ba2531d210a63d86a3fb1a4278661579e

Contents?: true

Size: 1.72 KB

Versions: 7

Compression:

Stored size: 1.72 KB

Contents

# frozen_string_literal: true

require 'fileutils'

require 'libis/tools/extend/string'
require 'libis/tools/logger'
require 'libis/tools/command'

require 'libis/format/config'

module Libis
  module Format
    module Tool
      class PdfaValidator
        include ::Libis::Tools::Logger

        def self.run(source)
          new.run source
        end

        def run(source)
          src_file = File.absolute_path(source)

          timeout = Libis::Format::Config[:timeouts][:pdfa_validator]
          result = nil
          if (pdfa = Libis::Format::Config[:pdfa_cmd])
            # Keep it clean: tool generates fontconfig/ cache dir in current working dir
            previous_wd = Dir.getwd
            Dir.chdir(Dir.tmpdir)

            result = Libis::Tools::Command.run(
              pdfa,
              '--noxml',
              '--level', 'B',
              '--verb', '0',
              src_file,
              timeout:,
              kill_after: timeout * 2
            )

            result[:err] << "#{self.class} took too long (> #{timeout} seconds) to complete" if result[:timeout]

            Dir.chdir(previous_wd)

            out, err = result[:out].partition { |line| line =~ /^VLD-\[PASS\]/ }
            result[:out] = out
            result[:err] += err

          else
            jar = Libis::Format::Config[:preflight_jar]
            result = Libis::Tools::Command.run(
              Libis::Format::Config[:java_cmd],
              '-jar', jar,
              src_file,
              timeout:,
              kill_after: timeout * 2
            )

            result[:err] << "#{self.class} took too long (> #{timeout} seconds) to complete" if result[:timeout]

          end
          result
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
libis-format-1.3.7.1 lib/libis/format/tool/pdfa_validator.rb
libis-format-1.3.7 lib/libis/format/tool/pdfa_validator.rb
libis-format-1.3.6 lib/libis/format/tool/pdfa_validator.rb
libis-format-1.3.5 lib/libis/format/tool/pdfa_validator.rb
libis-format-1.3.4 lib/libis/format/tool/pdfa_validator.rb
libis-format-1.3.3 lib/libis/format/tool/pdfa_validator.rb
libis-format-1.3.2 lib/libis/format/tool/pdfa_validator.rb