1

バイト配列のコレクションに格納されたいくつかの pdf ファイルのバイナリがあります。

私の目標は、abcpdf を使用してそれらを 1 つの .pdf ファイルに連結し、その新しく作成されたファイルを ASP.Net Web サイトのページの Response オブジェクトにストリーミングすることです。

このようにしていた:

ループ開始 ...

'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)

エンドループ

これは、95% の時間で正常に機能していました。ただし、新しい Doc オブジェクトを作成すると、System.ExecutionEngineException がスローされ、CLR がクラッシュすることがありました。多数のpdf(2つだけで発生することもあります)、または大きなサイズのpdfに関連しているようには見えませんでした。ほぼ完全にランダムに見えました。

これは、abcpdf の既知のバグであり (あまりよくありません)、こちらの項目 6.24で説明されています。abcpdf Doc オブジェクトに Using ブロックを使用することを提案する、役立つ SO 投稿に出会いました。

だから今私はこれをやっています:

    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

そして、問題が再び発生するのをまだ見たことがなく、テストバージョンをできる限り試してみました.

このエラーで似たような経験をした人はいますか? これで直りましたか?

4

1 に答える 1

3

CLR に内部エラーが発生すると ExecutionEngineExceptions がスローされるため、これは Microsoft が修正する必要があります。

したがって、コードを using ブロックまたは try-catch ブロックにラップしても、うまくいく可能性は低くなります。

.NET 3.5 SP1 に関連する webSupergoo の Web サイトで言及されている問題と、セキュリティ属性がアセンブリに適用される方法。Web ページのデバッグ中にこの障害が発生することを確認しており、この問題は ASP.NET の動的コンパイルにも関連していると思われます。

ABCpdf バージョン 7.010 以降では、この問題を回避できます。ばかげた質問で申し訳ありませんが、最新バージョンを試しましたか?

Windows の [スタート] メニュー > [プログラム] > [ABCpdf 7.0 .NET] から PDFSettings ユーティリティを使用して、現在インストールされている ABCpdf のバージョンを確認できます。

ABCpdf を更新できない場合は、.NET 3.5 SP1 のアンインストールを検討する必要があります。

于 2010-04-30T09:59:57.717 に答える