我使用iTextSharp为现有PDF文件添加水印。在屏幕上查看这些文件时,水印和PDF正确显示。但是,在某些打印机上打印时(3个中有2个已经过客户端测试),水印似乎会干扰其上方的内容,导致打印时出现格式错误。
PDF是CAD图纸(即电路图纸等)
用于应用水印的代码如下。通过调用PdfContentByte
类
GetOverContent
来检索PdfStamper
private void AddWaterMark(PdfContentByte dc, string text, BaseFont font, float fontSize, float angle, BaseColor color, Rectangle realPageSize, Rectangle rect = null)
{
var gstate = new PdfGState { FillOpacity = 0.1f, StrokeOpacity = 0.3f };
dc.SaveState();
dc.SetGState(gstate);
dc.SetColorFill(color);
dc.BeginText();
dc.SetFontAndSize(font, fontSize);
var ps = rect ?? realPageSize; /*dc.PdfDocument.PageSize is not always correct*/
var x = (ps.Right + ps.Left) / 2;
var y = (ps.Bottom + ps.Top) / 2;
dc.ShowTextAligned(Element.ALIGN_CENTER, text, x, y, angle);
dc.EndText();
dc.RestoreState();
}
以下是屏幕上的示例:
任何人都可以告诉我为什么某些打印机无法正确打印PDF,以及我是否可以更改应用水印以避免此问题的方式?