Class: Arquivo::C118jpg

Inherits:
String
  • Object
show all
Defined in:
lib/arquivo/jpg.rb

Overview

permite processar documentos em imagens JPG

Instance Attribute Summary collapse

processamento collapse

Instance Method Summary collapse

Constructor Details

#initialize(jpg, opt) ⇒ C118jpg

Returns JPG c118.

Parameters:

  • jpg (String)

    JPG c118

  • opt (Hash)

    parametrizar JPG

Options Hash (opt):

  • :fuzz (Numeric) — default: 29

    trim jpg N-1, escolhe menor -> scanned pdf

  • :quality (Numeric) — default: 15

    compress jpg N% -> scanned pdf (less=low quality)



40
41
42
43
44
45
46
47
# 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

Instance Attribute Details

#baseString (readonly)

Returns base do documento.

Returns:

  • (String)

    base do documento



25
26
27
# File 'lib/arquivo/jpg.rb', line 25

def base
  @base
end

#extString (readonly)

Returns extensao do documento.

Returns:

  • (String)

    extensao do documento



23
24
25
# File 'lib/arquivo/jpg.rb', line 23

def ext
  @ext
end

#fileString (readonly)

Returns nome do documento.

Returns:

  • (String)

    nome do documento



21
22
23
# File 'lib/arquivo/jpg.rb', line 21

def file
  @file
end

#idString (readonly)

Returns id do documento ft/rc/ex/sc <numero>.

Returns:

  • (String)

    id do documento ft/rc/ex/sc <numero>



31
32
33
# File 'lib/arquivo/jpg.rb', line 31

def id
  @id
end

#opcoesHash (readonly)

Returns opcoes parametrizar JPG.

Returns:

  • (Hash)

    opcoes parametrizar JPG



29
30
31
# File 'lib/arquivo/jpg.rb', line 29

def opcoes
  @opcoes
end

#sizeInteger (readonly)

Returns tamanho do documento.

Returns:

  • (Integer)

    tamanho do documento



27
28
29
# File 'lib/arquivo/jpg.rb', line 27

def size
  @size
end

Instance Method Details

#aparaC118jpg

Returns jpg com melhor aparo.

Returns:

  • (C118jpg)

    jpg com melhor aparo



58
59
60
61
# File 'lib/arquivo/jpg.rb', line 58

def apara
  system cmd_apara(opcoes[:fuzz], '')
  melhor_aparo
end

#cmd_apara(fuzz, cmd) ⇒ String

Returns comando para aparar imagem.

Returns:

  • (String)

    comando para aparar imagem



72
73
74
75
76
77
78
79
# 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_aparoC118jpg

Returns jpg com melhor aparo.

Returns:

  • (C118jpg)

    jpg com melhor aparo



64
65
66
67
68
69
# 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

#oa4String

Returns opcoes centrar jpg em canvas A4.

Returns:

  • (String)

    opcoes centrar jpg em canvas A4



95
96
97
98
99
100
101
102
103
104
105
# 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

#oqualidadeString

Returns opcoes comprimir jpg.

Returns:

  • (String)

    opcoes comprimir jpg



90
91
92
# File 'lib/arquivo/jpg.rb', line 90

def oqualidade
  "-quality #{opcoes[:quality]}% -compress jpeg"
end

#pdfC118pdf

Returns pdf com jpg processada dentro.

Returns:

  • (C118pdf)

    pdf com jpg processada dentro



82
83
84
85
86
87
# 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) ⇒ Object

apara jpg e converte em pdf para arquivo

Parameters:

  • dad (Hash)

    dados oficiais para reclassificacao de faturas e recibos



53
54
55
# File 'lib/arquivo/jpg.rb', line 53

def processa_jpg(dad)
  apara.pdf.final(dad[id]).marca
end