Qual a melhor forma de mesclar as informações, em um servidor, em um “formulário”, sendo um PDF gerado como saída final [fechado]

StackOverflow https://stackoverflow.com/questions/54808

Pergunta

Fundo:

Eu tenho um aplicativo VB6 que "herdei" que gera um PDF para o usuário revisar usando a integração não suportada do Acrobat Reader OCX.O programa gera um arquivo FDF com os dados e, em seguida, renderiza o resultado mesclado quando o FDF é mesclado com um PDF.Só funciona corretamente com o Acrobat Reader 4 :-(.A instalação de uma versão mais recente do Acrobat Reader quebra esse aplicativo, deixando os usuários muito insatisfeitos.

Quero reprojetar este aplicativo para que ele envie os dados a serem mesclados em um servidor de geração de saída PDF.Este servidor irá mesclar os dados transmitidos a ele no formulário, gerar uma imagem em PDF e armazená-la, para que qualquer usuário que deseje visualizar o resultado final possa simplesmente obter o PDF (ele é gerado apenas uma vez).Se os dados subjacentes forem alterados, o PDF será excluído e regenerado na próxima vez que for solicitado.O programa cliente poderá então ter qualquer versão do Acrobat Reader que desejar, pois será utilizado exclusivamente para a exibição de arquivos PDF (conforme pretendido).O servidor provavelmente será escrito em .NET (C#) com Visual Studio 2005, provavelmente como um serviço Web...

Pergunta:

Como os outros recomendariam que eu fizesse isso?Devo usar o Acrobat 9 da Adobe no servidor para fazer isso, colocando os dados no formato FDF ou XML da Adobe e deixando o Acrobat fazer a mesclagem?Existem grandes concorrentes no espaço "mesclar dados em formulário e gerar PDF"?Como os outros fazem isso?Tem que ser baseado em API, sem GUI no servidor, é claro...

Embora parte da saída seja gerada via FDF/PDF, outra parte do aplicativo envia linhas, gráficos e texto para a impressora (ou um formulário para fins de visualização), uma página por vez, fornecendo as coordenadas x/y adequadas, fonte, tamanho, etcpara cada um, saber quando está no final de uma página, etc.Este código está atualmente no programa que exibe isso para o usuário revisar e também está no programa que imprime o formulário final na impressora.Para manter a consistência entre o revisor e a impressora, gostaria de mover essa lógica de geração de saída para um servidor também, usando uma boa ferramenta API de geração de PDF ou usando o código como está e gerando um PDF com uma impressora PDF...e salvando este PDF para exibição pelos clientes.

Pesquisar "software de formulário" ou "software de preenchimento de formulário" ou pesquisas semelhantes retorna muuuito material não relacionado, principalmente relacionado à interface do usuário para os usuários preencherem formulários, só não sei como restringir minha pesquisa adequadamente.Este site parece o lugar perfeito para fazer essa pergunta, já que outros programadores também precisam gerar resultados semelhantes e já experimentaram algumas ferramentas excelentes.

EDITAR:

Adicionei a tag PDF, bem como a geração de PDF.Além disso, meu cliente atual insiste na saída em PDF, mas agradeço as sugestões alternativas.

Foi útil?

Solução

não posso ajudar com solução VB6, posso ajudar com solução .net ou java no servidor.
Obtenha iText ou iTextSharp em http://www.lowagie.com/iText/.
Possui uma classe PdfStamper que pode mesclar classes PDF e FDF FDFReader/FDFWriter para gerar arquivos FDF, obter nomes de campos de arquivos PDF, etc...

Outras dicas

Siga meu conselho.Abandone o PDF para XPS.Estou trabalhando em dois aplicativos, ambos baseados em servidor.Um deles exibe documentos baseados em imagens como PDFs em um navegador.O segundo usa modelos FixedPage para construir documentos XPS vinculados a fontes de dados.

Minha conclusão depois de trabalhar em ambos os projetos é que os PDFs são uma droga;Documentos XPS nem tanto.Você tem que pagar em dinheiro por uma biblioteca de PDF decente, enquanto o XPS vem com a estrutura.A geração de documentos PDF consome muita memória, tem muitos buracos e não é muito amigável ao servidor.Os documentos XPS ocupam muito menos espaço e menos chances de dar um tiro no pé.

Tive grande sucesso usando o Microsoft Word.O formulário é desenhado em Word e composto com dados XML.O documento é executado através de um conversor de PDF (Neevia neste caso, mas existem melhores) para gerar o PDF.

Tudo isso é feito em C#.

Mesmo barco.No momento, estamos criando PDFs desta forma:O aplicativo vb6 coloca um registro no sql (com nome do arquivo, data de criação, usuário e destino final) e o xls (ou documento) é movido para um diretório do servidor (compartilhamento) e o servidor possui um serviço vb.net que possui um monitoramento de filewatcher esse diretório.O arquivo aparece, o serviço inicia o Excel (Word) para PDF do arquivo via Adobe, consulta o SQL para descobrir o que fazer com o PDF quando ele é feito e registra o horário de término.

Esta foi a solução barata - levou apenas cerca de um dia para fazer o código e outro dia para depurar ambas as extremidades e implementar a construção.

Esta não é a maneira de fazê-lo. A Adobe trava em momentos aleatórios ao tentar fazer os PDFs.ele funcionará por duas semanas sem nenhum problema e depois (como hoje) travará a cada 5 minutos.ou a cada duas horas.ou às 11h07, 2h43, 3h05 e 6h11.

Vamos converter o material do Excel e do Word e colocar os dados diretamente em PDFs usando o PDFTron na próxima revisão.Sim, o PDFTron custa dinheiro (compramos a licença de 1 quilobuck por processador), mas ele fará o trabalho, e muito bem.XPS são legal mas eu, assim como você, tenho que fornecer PDFs.É o jeito das coisas.

Confira o pdfTron (google) e veja se ele fará o que você deseja.Então você só precisa descobrir qual licença você precisa e como vai pagar por ela.Se alguém inventar algo melhor, espero que vote no topo da lista!!!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top