PDF中有2个位图分辨率
是否有一种方法可以在PDF中为单个图像放置两个位图实例?一个在屏幕上查看时显示,另一个在打印时显示 我们遇到的问题是将图表渲染为位图。如果我们使用300 dpi,那么轴线、边界等就会消失。如果我们使用96 dpi,那么打印看起来很糟糕PDF中有2个位图分辨率,pdf,pdf-generation,Pdf,Pdf Generation,是否有一种方法可以在PDF中为单个图像放置两个位图实例?一个在屏幕上查看时显示,另一个在打印时显示 我们遇到的问题是将图表渲染为位图。如果我们使用300 dpi,那么轴线、边界等就会消失。如果我们使用96 dpi,那么打印看起来很糟糕 谢谢-戴夫是的,有办法,尽管我不知道。我们将其用作同事的恶作剧,当打印文档时,会出现一些完全不同的图片您可以使用可选内容来执行此操作。向使用应用程序词典提供“打印”事件会导致内容适合打印。(请注意,并非所有印刷申请都会遵守这一规定) 请参阅PDF参考手册,my 1
谢谢-戴夫是的,有办法,尽管我不知道。我们将其用作同事的恶作剧,当打印文档时,会出现一些完全不同的图片您可以使用可选内容来执行此操作。向使用应用程序词典提供“打印”事件会导致内容适合打印。(请注意,并非所有印刷申请都会遵守这一规定)
请参阅PDF参考手册,my 1.7 edition第4.10节“可选内容”,从第364页开始。您还可以使用2个只读文本框字段,并在字段外观上绘制图像。然后,对于一个字段,将其可见性设置为VisibleNonPrintable,对于另一个HiddenButPrintable 您可以添加一个替代图像字典(,第8.9.5.4节),该字典可以指定用于打印的图像。我实现了这一点(使用iText)。对于其他需要这些的人,这里是代码。和
+1; 在ISO 32000-1规范中,第8.11节涉及可选内容。
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");
}