ITextSharp定义页面背景图像:什么是正确的方法?

时间:2012-03-07 06:08:27

标签: c# pdf itextsharp

是否可以在ITextSharp中为pdf页面设置背景图像?

为pdf页面定义背景图像的正确方法是什么?我设置的文件中是否有属性?

或者就像创建另一张图片一样(我的图片有A4页面的尺寸)? 如果我将背景图像添加为普通图像,我是否可以在背景图像的顶部放置段落?

var document = new Document(PageSize.A4, 50, 50, 25, 25);
// Create a new PdfWrite object, writing the output to a MemoryStream
var output = new MemoryStream();
var writer = PdfWriter.GetInstance(document, output);
var logo = iTextSharp.text.Image.GetInstance(Server.MapPath("~/Images/test.jpg"));
logo.SetAbsolutePosition(0,0);
document.Add(logo);

// Will the following paragraph be ON TOP or below the background image? 
// I am aiming for on top
document.Add( new Paragraph("sjfkkjdsfk") ); 
document.Close();

1 个答案:

答案 0 :(得分:0)

徽标很好 - 它只是页面上的常规图像内容,而不是背景img(就像在HTML中一样)。要将内容置于其上,您需要使用直接内容:

PdfContentByte over = writer.DirectContent;
over.SaveState();
over.BeginText();
over.SetFontAndSize(BaseFont.CreateFont(), 9);        
over.ShowTextAligned(Element.ALIGN_LEFT, "Your Text", x, y, 0);
over.SetLineWidth(0.3f);        
over.EndText();
over.RestoreState();

请注意x和y线是从左下角开始的。最后一个参数是旋转。

另一个提示:做一个doc.NewPage();如果你想开始一个带有图像背景的新页面,那么文本线就在新页面上。