Um cliente me solicitou um sistema que permitisse receber documentos via web. O sistema deveria ter uma página que permitisse fazer upload de documentos (.doc, .ppt, .xls, .txt, .pps, .rtf). Até aí, tudo bem. O Visual Studio possui componente para realizar esta operação facilmente. Em consulta no Google é possível encontrar inúmeras sugestões de código e em diversas linguagens.
Acontecesse que o cliente não queria armazenar no banco de dados os arquivos recebidos em seu formato original. Ele gostaria que os arquivos, ao chegarem, fossem convertidos em PDF e, então, fossem armazenados num campo BLOB de uma tabela do banco de dados. Aí começou o problema!
Fiz algumas pesquisas na internet e descobri vários componentes pagos para realizar esta conversão. O cliente não estava disposto a contratar licensas do produto. E agora? Fiz, então, inúmeras pesquisas afim de encontrar algum componente de código aberto que pudesse fazer conversão de documentos do office. Não encontrei nenhum. Aproveito para solicitar a quem encontrar algum componente gratuito que realize esta operação não deixe de registrar aqui.
Mas nem tudo foi perdido. Um componente .NET eu (ainda) não encontrei (me ajudem). Fui obrigado a apelar para outras soluções e encontrei uma bastante interessante. Vou descrevê-la aqui.
Achei um programa muito interessante que permite converter qualquer documento imprimível no Windows para PDF utilizando uma impressora virtual: PDF Creator. Conheça mais detalhes da ferramenta no site da comunidade. Clique aqui e conheça mais sobre o formato PDF.
Execute o programa de instalação, instalando também os exemplos (samples) quando for solicitado. Após instalado, na pasta de instalação do produto possui uma chamada COM (Isso mesmo. A solução foi usar COM/DCOM.) e nessa pasta possui exemplos de utilização do PDF Creator com várias linguagens, inclusive em .NET. Eu me inspirei no exemplo da pasta “C:\Arquivos de programas\PDFCreator\COM\Dot Net\VS2005\C#”. Voce pode abrir esse projeto no Visual Studio, compilar e tirar sua próprias conclusões.Tudo está muito bem explicado. Este exemplo faz uso do ActiveX para permitir a conversão de documentos.
Quanto ao sistema do cliente devo informar que essa solução teve alguns inconvenientes: ![]()
1) Deve ter instalado no servidor WEB o PDFCreator bem como o programa padrão para o arquivo que deseja converter.
2) Nem todos os arquivos podem ser utilizados para impressão/conversão pelo processo. Pelo menos com os arquivos do Office 2003 (.doc, .ppt, .xls, .txt, .pps, .rtf) que eu testei, foram convertidos sem nenhum problema em um site.
3) Arquivos com macros, links dinâmicos, etc. e arquivos que, quando aberto necessitem de alguma confirmação para continuar abertura no programa também são problemas. Por exemplo, a princípio não há como converter .html por causa da necessidade de escolha da impressora de saída. O esquema só é útil para arquivos que permitam impressão direta pela impressora padrão sem intervenção do usuário.
4) O COM do PDF creator não permite abrir várias instâncias do programa. Isso pode ser um problema em sistema WEB onde vários usuários podem estar efetuando a conversão ao mesmo tempo. Caberá ao programador cuidar disso.
5) As vezes pode ser necessário encerrar (kill) algum processo pendente do PDF Creator na memória. Sem isso outras conversões não poderão ser feitas por causa do motivo do item 4. Também caberá ao programador cuidar disso.
6) Quando tentar executar um módulo web com acesso ao componente COM possivelmente dê esse erro: Retrieving the COM class factory for component with CLSID {3A619AE4-50EC-46C8-B19E-BE8F50DD2F22} failed due to the following error: 80070005. Pra isso também há solução. Clique aqui e veja como resolver o problema.
7) Por último, não consegui converter arquivos pelo PDFCreator rodando diretamente em uma página hospedada no IIS. Tentei de tudo e nada. O programador deverá buscar formas de contornar essa situação. Eu consegui dar um jeito nisso também.
Esses foram alguns dos problemas que enfrentei e acho que utilizei uma boa solução para alguns desses problemas. Claro que tem situações que, a princípio, não há o que ser feito. Aproveito para indicar um pequeno sistema web que construi baseado no PDF Creator. Ele permite o upload de arquivos e faz a conversão. Tratei alguns os problemas que comento acima (só os passíveis de solução). Quem desejar conhecer, o projeto se chama Convert2PDF e faz conversão via web de arquivos do Microsoft Office 2003. Cliqui aqui e veja mais detalhes.
Quem tiver novidades sobre esse assunto não deixe de registrar aqui.
É isso.
0 Respostas para “Conversão de documentos para PDF em .NET”