abntex / limarka

Escreva seu trabalho de conclusão de curso com as normas da ABNT em Markdown
https://github.com/abntex/limarka/wiki
MIT License
408 stars 41 forks source link

Erro ao ler campos multi-linhas de configuração salva com o PDF-XChange Viewer #124

Closed andresimi closed 7 years ago

andresimi commented 7 years ago

Comportamento esperado: Que o gerador de abreviaturas as gere.

Passos para reprodução: Colocar 2 siglas no pdf de configuração, só a primeira é gerada. A de OMS não foi gerada. image

Especificações do sistema: Ubuntu 1604 - PDF X Viewer

edusantana commented 7 years ago

O problema é o Leitor de PDF, que está codificando a quebra de linha com outro caractere.

Utilizando pdftk para ler os campos de configuracao.pdf salvos pelo Evince (leitor padrão no Ubuntu):

---
FieldType: Text
FieldName: siglas
FieldNameAlt: Sigla: Descricao da sigla
FieldFlags: 4096
FieldValue: DSM-V: Manual Diagnósico e Estatístico de Transtornos Mentais, 5a edição
OMS: Organização Mundial de Saúde
FieldValueDefault: ABNT: Associação Brasileira de Normas Técnicas
FieldJustification: Center

Utilizando pdftk para ler os campos de configuracao.pdf salvos pelo PDF XCHANGE VIEWER:

FieldType: Text
FieldName: siglas
FieldNameAlt: Sigla: Descricao da sigla
FieldFlags: 4096
FieldValue: DSM-V: Manual Diagnósico e Estatístico de Transtornos Mentais, 5a edição^MOMS: Organização Mundial de Saúde
FieldValueDefault: ABNT: Associação Brasileira de Normas Técnicas
FieldJustification: Center

As possíveis soluções seriam:

  1. Tentar fazer o editor utilizar quebra de linha. Talvez modificar a codificação do ambiente de execução do wine.
  2. Cadastrar bug em pdf-forms e aguardar solução. E tentar implementar solução.
  3. Tenta outra solução no limarka.

Work around:

Por enquanto utilizar o evince:

siglas

edusantana commented 7 years ago

Eu acho que dá para o limarka converter o \r em \n e depois fazer o parse. Tenho que investigar melhor a implementação disso.

$ irb
irb(main):001:0> require 'pdf_forms'
=> true
irb(main):003:0> pdftk = PdfForms.new('pdftk')
=> #<PdfForms::PdftkWrapper:0x000000012a7208 @pdftk="/usr/bin/pdftk", @options={}>
irb(main):006:0>  pdf = PdfForms::Pdf.new 'configuracao.pdf', pdftk, utf8_fields: true
=> #<PdfForms::Pdf:0x00000000e9ca50 @options={:utf8_fields=>true}, @path="configuracao.pdf", @pdftk=#<PdfForms::PdftkWrapper:0x000000012a7208 @pdftk="/usr/bin/pdftk", @options={}>>
irb(main):007:0> pdf.field "siglas"
=> #<PdfForms::Field:0x00000001393540 @type="Text", @name="siglas", @name_alt="Sigla: Descricao da sigla", @flags="4096", @value="DSM-V: Manual Diagnósico e Estatístico de Transtornos Mentais, 5a edição\rOMS: Organização Mundial de Saúde", @value_default="ABNT: Associação Brasileira de Normas Técnicas", @justification="Center">

Arquivo utilizado: configuracao.pdf