Sha256: 2bf431afb2a70ce83aee72327998679aa56d66ddf47b9d324a479ac6d8ac9bf0

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::TOOL_DIR, '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.49 lib/libis/format/tool/pdfa_validator.rb
libis-format-0.9.48 lib/libis/format/tool/pdfa_validator.rb
libis-format-0.9.47 lib/libis/format/tool/pdfa_validator.rb