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[]