У меня есть двоичный файл для нескольких файлов PDF, хранящихся в коллекции байтовых массивов.
Моя цель - объединить их в один файл .pdf с помощью abcpdf, а затем передать вновь созданный файл в объект Response на странице веб-сайта ASP.Net.
делал это так:
НАЧАТЬ ПЕТЛЯ
...
'Create a new Doc
Dim doc As Doc = New Doc
'Read the binary of the current PDF
doc.Read(bytes)
'Append to the master merged PDF doc
_mergedPDFDoc.Append(Doc)
END LOOP
Который работал нормально в 95% случаев. Время от времени, однако, создание нового объекта Doc приводило к возникновению исключения System.ExecutionEngineException и падению CLR. Похоже, это не связано с большим количеством PDF-файлов (иногда это может произойти только с 2) или с большими PDF-файлами. Это казалось почти полностью случайным.
Это известная ошибка в abcpdf, описанная (не очень хорошо) здесь Item 6.24 . Я наткнулся на полезный пост SO , в котором предлагалось использовать блок Using для объекта Doc abcpdf.
Так что теперь я делаю это:
Using doc As New Doc
'Read the binary of the current PDF
doc.Read(bytes)
'Append to the master merged PDF doc
_mergedPDFDoc.Append(doc)
End Using
И я еще не видел, чтобы проблема возникла снова, и я как можно быстрее набираю тестовую версию.
Кто-нибудь имел подобный опыт с этой ошибкой? Это исправило это?