segunda-feira, 8 de outubro de 2012

Erro com.genexus.reports.PDFReportItextSharp.GxDrawText

O IIS é famoso por apresentar mensagens indecifráveis, principalmente quando situações ocorrem de forma totalmente inesperada, sem uma explicação que parece plausível, como por exemplo um relatório que de repente não funciona mais.

Vamos a um exemplo:



Que fazer numa situação dessas onde a informação apresentada não traz nenhuma pista? A situação trata-se apenas da geração de um relatório PDF, que estava funcionando corretamente até então, e a mensagem não traz nenhuma informação útil.

Algo novo deve ter acontecido, a formatação do HD, a criação de uma nova KB, ou seja, se parar pra pensar verá que algo novo aconteceu na aplicação, que no meu caso foi a criação de um novo environment, portanto, trata-se de algo relacionado com a configuração desse novo ambiente.

A busca pela solução levou a várias ações:

  1. Se o erro estiver ocorrendo apenas em um relatório PDF, e nos demais a impressão está correta, então o problema não é devido a privilégios de gravação do documento na pasta Web.  Essa situação pode ocorrer, e para se corrigir voce deve designar privilégio de escrita para os usuários ASP, IUSR, Todos, ou seja, se a execução for local não precisa se preocupar com consequencias.
  2. Se o erro ocorre em um relatório especifico, então tem a ver com o conteúdo do próprio relatório em questão.  Nesse caso deve-se recorrer a uma leitura do PDFREPORT.INI, e verificar no próprio se existe algum conteúdo que é diferente dos relatórios que funcionam. Em meu caso havia a configuração para uma fonte 3 of 9 (barcode).
A solução foi observada verificando-se a referencia ao endereço da fonte, Fonts Location (MS), que se removido fazia com que o relatório voltasse a funcionar, mas sem a impressão do código de barras, portanto, esse era o problema!
 
[Fonts Location (MS)]
3 of 9 Barcode= C:\Windows\Fonts\3OF9.TTF
 
[Embeed Fonts]
3 of 9 Barcode= true

O que ocorreu é que estava utilizando um PDFReport.INI de outra máquina que não refletia o caminho correto da fonte.

Portanto, a conclusão não pode ser classificada de simples, porque numa situação em que temos nada para se chegar a uma conclusão não é uma coisa simples de se fazer, mas é lógica e nesse assunto todos somos craques, não? Boa depuração!