Pergunta

O projeto que estou no está usando um componente 3o partido para PDFs construir dinâmicas em um sistema web VB.Net chamado ABCpdf.Net. (Não uma ferramenta terrível, mas não um grande tampouco.)

De vez em quando, por razões que eu não posso compreender, o objeto de documento lança uma SEHException. Cavando futher, verifica-se isso é causado por uma exceção personalizada no objeto documento do tipo WebSupergoo.ABCpdf6.Internal.PDFException. O conteúdo contém apenas o título não -terribly-útil "Não é possível obter dados de imagem. Out of memory" Geralmente isso acontece quando se tenta adicionar uma imagem ao PDF. Uma vez que estas imagens são PNGs de menos de 100k, eu estou supondo que seu tamanho não é o problema.

Além disso, a coisa realmente estranha é que uma vez que este problema começa a acontecer, a única maneira de fazê-lo parar parece ser a de reiniciar o servidor web, o que é claramente um pouco sub-par.

Alguém já teve esse problema (ou mesmo usado essa ferramenta?)

Foi útil?

Solução 2

Update, três meses depois:

tão perto quanto eu posso dizer, os problemas de memória foram todos resolvidos quando nós atualizado a partir ABCpdf 6 a 7. Parece que a versão 7 não é mais um objeto COM com um invólucro NET, mas todos código gerenciado a partir do fundo acima. Ainda não é o maior gerador de PDF lá fora, mas os problemas de eliminação de recursos parecem ter sido resolvidos.

Outras dicas

Fascinante. Eu tinha chegado à conclusão de que era o que deve estar acontecendo. Você ainda chamar a doc.Clear () no final do bloco usando?

Eu não vi especificamente esse erro antes, mas nós tivemos problemas de memória com ABC PDF antes.

É uma longa história curta é que não é uma base de código totalmente gerenciado, mas simplesmente um wrapper .NET em torno de sua versão COM. Dito isto, traçamos o nosso problema de uso de memória para não dispor de seus objetos corretamente.

Assim, em vez de:


Dim doc As New Doc()
'etc...

fazer isso:


    Dim doc as Doc
    Using doc As New Doc()
      'etc...
    End Using
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top