1つの画像のPDFにビットマップの2つのインスタンスを配置する方法はありますか?1つは画面に表示されたときに表示され、もう1つは印刷されたときに表示されますか?
私たちが抱えている問題は、チャートをビットマップにレンダリングすることです。300 dpiを実行すると、軸線や境界線などが消えます。96 dpiを実行すると、印刷が悪く見えます。
ありがとう-デイブ
1つの画像のPDFにビットマップの2つのインスタンスを配置する方法はありますか?1つは画面に表示されたときに表示され、もう1つは印刷されたときに表示されますか?
私たちが抱えている問題は、チャートをビットマップにレンダリングすることです。300 dpiを実行すると、軸線や境界線などが消えます。96 dpiを実行すると、印刷が悪く見えます。
ありがとう-デイブ
これを行うには、オプションのコンテンツを使用できます。「印刷」イベントを使用アプリケーション ディクショナリに提供すると、コンテンツが印刷に適したものになります。(すべての印刷アプリケーションがこれを受け入れるわけではないことに注意してください)。
私の 1.7 版のセクション 4.10 の「オプションのコンテンツ」の 364 ページから始まる PDF リファレンス マニュアルを参照してください。
印刷に使用する画像を指定できる代替画像辞書( PDF 仕様、セクション 8.9.5.4) を追加できます。
はい、わかりませんが、方法はあります。同僚のいたずらとして使用しました。ドキュメントを印刷すると、まったく別の写真が表示されました。
2つの読み取り専用テキストボックスフィールドを使用して、フィールドの外観に画像を描画することもできます。次に、一方のフィールドの可視性をVisibleNonPrintableに設定し、もう一方のフィールドの可視性をHiddenButPrintableに設定します。
これを実装しました(iTextを使用)。これらを必要とする他の人のために、ここにコードがあります。ソースは私のブログからダウンロードできます。
static void Main(string[] args)
{
Document document = new Document(new Rectangle(0, 0, 8.5f * 72.0f, 11 * 72));
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(Path.GetFullPath(@"..\..\test_dotnet.pdf"), FileMode.OpenOrCreate, FileAccess.ReadWrite));
document.Open();
document.Add(new Paragraph("Visibility test"));
// not displayed on printer
PdfLayer layer = new PdfLayer("screen", writer);
layer.OnPanel = false;
layer.SetPrint("Print", false);
layer.View = true;
PdfContentByte cb = writer.DirectContent;
cb.BeginLayer(layer);
Image img = Image.GetInstance(Path.GetFullPath(@"..\..\building_01.png"));
img.SetAbsolutePosition(72, 72 * 7);
cb.AddImage(img);
cb.EndLayer();
// not displayed on screen
layer = new PdfLayer("print", writer);
layer.OnPanel = false;
layer.SetPrint("Print", true);
layer.View = false;
cb = writer.DirectContent;
cb.BeginLayer(layer);
img = Image.GetInstance(Path.GetFullPath(@"..\..\building_02.png"));
img.SetAbsolutePosition(72, 72 * 3);
cb.AddImage(img);
cb.EndLayer();
document.Close();
Console.Out.WriteLine("all done");
}