3

私のプログラムは、いくつかの画像を含む(かなり複雑な)フォームをプリンターに出力する必要があります。私は現在Printer.Canvas、PDFプリンター(PDF995)を選択した後、Delphi(2006)を使用してこれを行っています。これは御馳走のように機能します。

ただし、現在問題が発生しています。部分的に透明な画像が1つあり、他の要素(境界線、背景など)の上に配置する必要があり、そのテキストの一部は画像の一部から見えます。

通常の画面でこれを行うと、プロパティを使用Canvasして通常TBitmapのsで正常に機能しTransparentColorます。ただし、これをプリンターで実行しようとすると、常に機能するとは限りません。PDFプリンターでこれを試してみると、機能しません。背景が黒くなるか、(これまでのところ最良の結果)白になりますが、その下にあるものはすべて上書きされます。

アルファ透明度(別名半透明度)のPNG画像をWord文書に挿入し、それを上記のPDFプリンターに送信することで、同じ結果を達成しようとしました。半透明は消えますが、ピクセルの透明度は維持されます。少なくとも、どういうわけか可能であるはずです。

誰もが方法を知っていますか?

4

4 に答える 4

2

あなたはTransparentColorプロパティを使用していると言いましたが、アルファ透明度は本当に必要なく、バイナリ透明度を使用して逃げることができると言うのは正しいですか(各ピクセルの透明度はオフまたはオンです)?

その場合、ビットマップからリージョンを生成できる可能性があります。

次に、この領域をクリッピング領域として使用し、ビットマップを描画します。

PDF プリンターは、クリッピング領域を正しく処理できる場合があります。

ビットマップから領域を生成する例を次に示します。これは長方形以外のフォームを作成するために使用されますが、考え方は同じです: http://www.delphi-central.com/BitmapShapedForm.aspx

TCanvas のクリッピング領域を設定する別の例を次に示します: http://www.efg2.com/Lab/OtherProjects/PrinterDemo2.htm

于 2009-05-30T07:39:48.607 に答える
0

アプリケーションでサードパーティの PDF コンポーネントを使用して、キャンバスを直接 PDF にレンダリングすることを検討することをお勧めします。私は、赤外線サーモグラフィー用に開発した商用製品で、特殊なレポート (RTF、放射性 JPEG、表、テキストなど) にこの手法を使用しています。性能と品質に大変満足しています。私が使用している llPDFLibコンポーネントが更新されたばかりで、完全な画像透過性をサポートするようになったと思います。

幸運を祈ります。私の経験では、アルファチャンネルを使用して画像を印刷するのは難しい場合があります。

于 2009-05-30T02:35:38.163 に答える
0

PDFプリンターを使用して部分的な透明性を実現できるとは思いません。できることは、VisPDFパッケージを入手することです。それを使用すると、アプリケーションで実際に生成する pdf に含まれる画像にマスクを追加できます。これができない場合は、すべての背景を 1 つの画像に結合できます。この画像にアルファチャンネル化されたものを描画します。

于 2009-05-29T13:08:55.703 に答える
0

私も以前にこの問題を抱えていました。正しく思い出せば、最終的に操作したオフスクリーンビットマップを作成し、その後、もう一度コピーして、プリンターに送信していたキャンバスで新しいビットマップコピーを使用することでした。 .

于 2009-05-29T17:55:07.917 に答える