Sha256: a921f9db37e1f907eca03606ccc5951ed8bf9309c1094d285a05bc44cd13fa72

Contents?: true

Size: 1.83 KB

Versions: 3

Compression:

Stored size: 1.83 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
            )

            raise "#{self.class} took too long (> #{timeout} seconds) to complete" if result[:timeout]
            raise "#{self.class} errors: #{result[:err].join("\n")}" unless (result[:status]).zero? && result[:err].empty?

            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
            )

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

          end
          result
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
libis-format-1.3.0 lib/libis/format/tool/pdfa_validator.rb
libis-format-1.2.9 lib/libis/format/tool/pdfa_validator.rb
libis-format-1.2.8 lib/libis/format/tool/pdfa_validator.rb