C# アプリで 'process' を使用して pdf ファイルを印刷しました。しかし、印刷ステータスを取得できません。System.management と System.printing を使用して、プリンター/キューと対話できることがわかりました。試行錯誤を繰り返しました。これらの2つの名前空間を使用していますが、ファイルを印刷できませんでした.これらを使用してpdfドキュメントをプリンターに印刷する方法の例はありますか?
3 に答える
System.Printing を使用して PDF を印刷することはできません。PDF は、最初に印刷可能なファイルにレンダリングする必要があります。
さまざまなアプローチの概要については、この質問とその回答を参照してください。
Linux を使用している場合は、lp
コマンドを簡単に呼び出すことができます。
WPF
アプリケーションがある場合は、 を使用しますSystem.Printing
。
コードは次のとおりです。
var file = File.ReadAllBytes(pdfFilePath);
var printQueue = LocalPrintServer.GetDefaultPrintQueue();
using (var job = printQueue.AddJob())
using (var stream = job.JobStream)
{
stream.Write(file, 0, file.Length);
}
現在、この名前空間はWPF
アプリケーションで使用する必要があります。ASP.NET
またはとはうまく機能しませんWindows Service
。Windows Forms
と一緒に使用しないでくださいSystem.Drawing.Printing
。上記のコードを使用した PDF 印刷で問題は 1 つもありませんが、他の人にとってはうまくいかない理由については耳を傾けています。
情報を直接プリンターに送信するため、直接印刷をサポートするプリンターが必要です。私の経験では、これは Brother HL シリーズとシャープのエンタープライズ プリンターで動作しました。これが Excel ドキュメントなどの他のものでも機能することを願っていますが、そうではありません。幸いなことに、それらは他の方法で簡単に印刷できます。
この質問はここで既に回答されています。ファイル ドキュメントをプリンターに送信して印刷するにはどうすればよいですか? .
最初にレンダリングする必要があるため、標準的な方法で PDF を印刷することはできません。Ghostscript、Adobe Acrobat などを使用できます。
編集:ヨハンは速かった