背景图像在景观和覆盖整个pdf与iTextSharp

时间:2014-02-12 14:40:11

标签: c# asp.net pdf itextsharp

我有一张图片,我喜欢用我的pdf作为背景。 我的pdf在LANDSCAPE中,因此背景图片必须符合我的风景pdf。

我该怎么做? 这是我的代码,但图像并没有在横向上显示:(

string imageFilePath = Server.MapPath(".") + "/images/test.jpg";
iTextSharp.text.Image jpg = iTextSharp.text.Image.GetInstance(imageFilePath);
Document pdfDucment = new Document(new Rectangle(288f, 144f), 10, 10, 10, 10);
pdfDucment.SetPageSize(iTextSharp.text.PageSize.A4.Rotate());    

jpg.ScaleToFit(1500, 1500);
jpg.Alignment = iTextSharp.text.Image.UNDERLYING;
jpg.SetAbsolutePosition(0,5);

1 个答案:

答案 0 :(得分:0)

请查看BackgroundImage示例及其resulting pdf

现在让我们来看看您的代码并列出所有错误。

  • 目前还不清楚您对页面大小的期望。首先,使用288 x 144 pt的矩形创建文档。您还可以定义边距。但是,您然后将页面大小更改为旋转的A4页面。由于您的代码片段在实际打开文档时未显示,因此很难分辨出页面大小。如果在将页面大小更改为A4后调用Open(),则它将为A4。如果在更改页面大小之前触发它,它将是288乘144。
  • 使用ScaleToFit()方法调整图像大小。您希望图像适合1500 x 1500 pt的正方形。如果您的图像也是正方形,则图像确实将重新缩放为1500 x 1500 pt。但是,如果图像是矩形,则它将小于1500乘1500,因为ScaleToFit()在尝试使图像适合给定尺寸时保留纵横比。在我的例子中,我使用绝对缩放。当然,这可能会扭曲您的图像,但是又一次:您希望图像覆盖整个页面。
  • 您正在使用Image.UNDERLYING添加图片,但如果您的文档中还有其他图片,该怎么办?你将如何强制将图像添加到它们下面而不是覆盖它们?最安全的方法是将图像作为直接内容添加到常规内容下的图层中。
  • 最后,您使用0, 5作为绝对位置。为什么不0, 0?你想看到保证金吗?如果是这样,你怎么能确保页面两边的边距是5磅?

如果您逐个修复这些错误,使用我的Java示例作为灵感,您将能够解决您的问题。