0

ここでいくつかの回答で示唆されているように、アドビ経由でファイルを開かずに印刷するためにファイルを送信しようとしています。代わりに、PrintQueueライブラリ (からSystem.Drawing.Printing) を使用しています。

これまでに達成したこと:

PrintQueuepqとして参照されている正しいものがあります:

PrintQueue pq; //Assume it's correct. The way to get here it isn't easy and it is not needed for the question.

// Call AddJob
PrintSystemJobInfo myPrintJob = pq.AddJob();

// Write a Byte buffer to the JobStream and close the stream
Stream myStream = myPrintJob.JobStream;
Byte[] myByteBuffer = ObjectIHave.ToArray(); //Ignore the ObjectIhave, it actually is Linq object which is correct as well.
myStream.Write(myByteBuffer, 0, myByteBuffer.Length);
myStream.Close();

Microsoft Libraryから理解したように、正しく行われていますが、機能していません。何か案は?

編集:コードをデバッグすると、何かがプリンターに送信されていることがわかりますが、ファイルは送信されていないようです。

4

2 に答える 2

2

PDF バイトを印刷ジョブに書き込むことはできません。プリンターはそれを処理する方法を知りません。プリンターに送信する RAW データは、プリンターに固有のプリンター言語でドキュメントを記述する必要があります。それがプリンタードライバーの役割です。

PDFをプリンターに送信しただけでは印刷できません。PDF をレンダリングし、レンダリングされたイメージをプリンターに送信するソフトウェアが必要です。

ドキュメントに記載されているように:

このメソッドを使用して、Microsoft Windows スプーラーによって自動的に含まれないデバイス固有の情報をスプール ファイルに書き込みます。

この情報の重要な部分を強調しました。

于 2015-06-16T11:22:41.127 に答える