PDFsharp を MemoryStream に保存する 質問する

PDFsharp を MemoryStream に保存する 質問する

PdfSharp.Pdf.PdfDocument を Save メソッドで Stream に保存したいのですが、PDF ヘッダー設定が添付されません。そのため、Stream を読み戻してユーザーに返すと、PDF ファイルが無効であると表示されます。PDFsharp がメモリに保存するときに PDF ヘッダー設定を添付する解決策はありますか?

ベストアンサー1

PdfDocument.Save に問題があると思われる場合は、PDFsharp フォーラムで報告してください (ただし、エラーの説明はより具体的にしてください)。あなたの「解決策」は、私にはハックのように見えます。「pdfRenderer.Save」は内部で「PdfDocument.Save」を呼び出します。問題が何であれ、あなたの「解決策」は同じ Save ルーチンを呼び出します。

編集: PDF ファイルを含む byte[] を取得するには、以下を呼び出すだけです。

MemoryStream stream = new MemoryStream();
document.Save(stream, false);
byte[] bytes = stream.ToArray();

PDFsharp の初期バージョンでは、ストリームの位置はリセットされません。

だから電話しなきゃ

ms.Seek(0, SeekOrigin.Begin); 

ストリームから読み取る前にストリームの位置をリセットします。これは現在のバージョンでは不要になりました。

ストリームから読み取る代わりに、ToArray を使用することがよくあります。

編集 2: の代わりにstream.ToArray()を使用する方が効率的かもしれませんstream.GetBuffer()が、このバッファは通常 PDF ファイルよりも大きいため、そのバッファのバイトのみを使用する必要があります。 を長さパラメータとともにstream.Length受け取るメソッドに非常に便利です。byte[]

おすすめ記事