Sha256: a68b5979ff94a174dea19b94bc2b268a434861f1c9b5dabe67349fbf2bbf13f4

Contents?: true

Size: 1.67 KB

Versions: 3

Compression:

Stored size: 1.67 KB

Contents

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)
          self.new.run source
        end

        def run(source)

          src_file = File.absolute_path(source)

          if (pdfa = Libis::Format::Config[:pdfa_path])
            # 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
            )

            Dir.chdir(previous_wd)

            unless result[:out].any? {|line| line =~ /^VLD-\[PASS\]/}
              warn "Validator failed to validate the PDF file '%s' against PDF/A-1B constraints:\n%s", source,
                   result[:out].join("\n")
              return false
            end
          else
            jar = File.join(Libis::Format::ROOT_DIR, 'tools', 'pdfbox', 'preflight-app-1.8.10.jar')
            result = Libis::Tools::Command.run(
                Libis::Format::Config[:java_path],
                '-jar', jar,
                src_file
            )
            unless result[:status] == 0
              warn "Validator failed to validate the PDF file '%s' against PDF/A-1B constraints:\n%s", source,
                   result[:out].join("\n")
              return false
            end
          end
          true
        end
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
libis-format-0.9.46 lib/libis/format/tool/pdfa_validator.rb
libis-format-0.9.45 lib/libis/format/tool/pdfa_validator.rb
libis-format-0.9.44 lib/libis/format/tool/pdfa_validator.rb