class Arquivo::C118jpg

permite processar documentos em imagens JPG

Attributes

base[R]

@return [String] base do documento

ext[R]

@return [String] extensao do documento

file[R]

@return [String] nome do documento

id[R]

@return [String] id do documento ft/rc/ex/sc <numero>

opcoes[R]

@return [Hash] opcoes parametrizar JPG

size[R]

@return [Integer] tamanho do documento

Public Class Methods

new(jpg, opt) click to toggle source

@param [String] jpg JPG c118 @param [Hash] opt parametrizar JPG @option opt [Numeric] :fuzz (29) trim jpg N-1, escolhe menor ->

scanned pdf

@option opt [Numeric] :quality (15) compress jpg N% -> scanned pdf

(less=low quality)

@return [C118jpg] JPG c118

# File lib/arquivo/jpg.rb, line 40
def initialize(jpg, opt)
  @file = jpg
  @ext = File.extname(jpg).downcase
  @base = File.basename(jpg, File.extname(jpg))
  @id = @base[/\w+/]
  @size = File.size(jpg)
  @opcoes = opt
end

Public Instance Methods

apara() click to toggle source

@return [C118jpg] jpg com melhor aparo

# File lib/arquivo/jpg.rb, line 58
def apara
  system cmd_apara(opcoes[:fuzz], '')
  melhor_aparo
end
cmd_apara(fuzz, cmd) click to toggle source

@return [String] comando para aparar imagem

# File lib/arquivo/jpg.rb, line 72
def cmd_apara(fuzz, cmd)
  return cmd[1..-1] unless fuzz >= 1

  cmd += ";convert \"#{file}\" -fuzz #{fuzz}% -trim +repage " \
         "#{oqualidade} tmp/#{id}-#{fuzz}.jpg #{O2}"

  cmd_apara(fuzz - 4, cmd)
end
melhor_aparo() click to toggle source

@return (see apara)

# File lib/arquivo/jpg.rb, line 64
def melhor_aparo
  m = Dir.glob("tmp/#{id}-*.jpg")
         .map { |s| [s, File.size(s)] }
         .min_by { |_, v| v.between?(LT, size) ? v : size }
  m[1] < size ? C118jpg.new(m[0], opcoes) : self
end
oa4() click to toggle source

@return [String] opcoes centrar jpg em canvas A4

# File lib/arquivo/jpg.rb, line 95
def oa4
  # image dimensions in pixels.
  x, y = FastImage.size(file)

  # use the higher density to prevent exceeding fit
  density = [x / X4 * FB, y / Y4 * FB].max

  # canvas is an A4 page with the calculated density
  '-units PixelsPerInch -gravity center ' \
    "-extent #{X4 * density}x#{Y4 * density}"
end
oqualidade() click to toggle source

@return [String] opcoes comprimir jpg

# File lib/arquivo/jpg.rb, line 90
def oqualidade
  "-quality #{opcoes[:quality]}% -compress jpeg"
end
pdf() click to toggle source

@return [C118pdf] pdf com jpg processada dentro

# File lib/arquivo/jpg.rb, line 82
def pdf
  system "convert \"#{file}\" #{oa4} #{oqualidade} " \
         "-format pdf tmp/#{id}-trimed.pdf #{O2}"

  C118pdf.new("tmp/#{id}-trimed.pdf", opcoes)
end
processa_jpg(dad) click to toggle source

@!group processamento apara jpg e converte em pdf para arquivo

@param dad (see C118pdf#processa_pdf)

# File lib/arquivo/jpg.rb, line 53
def processa_jpg(dad)
  apara.pdf.final(dad[id]).marca
end