【问题标题】:Backgroundimage in landscape and cover whole pdf with iTextSharp横向背景图像并使用 iTextSharp 覆盖整个 pdf
【发布时间】:2014-02-12 14:40:11
【问题描述】:

我有一张图片,我喜欢将其用作我的 pdf 的背景。 我的 pdf 是横向的,所以背景图片必须适合我的横向 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);

【问题讨论】:

  • 图片显示不正确 - 你到底是什么意思,哪里错了?
  • 横向不是全屏
  • 你的代码在很多地方都是错误的。 (就好像您从未阅读过任何有关 iTextSharp 的文档一样。)我正在为您提供一个示例,向您展示它是如何完成的。给我一五分钟。

标签: c# asp.net pdf itextsharp


【解决方案1】:

请查看BackgroundImage 示例及其resulting pdf

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

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

如果您以我的 Java 示例为灵感,一一修复这些错误,您将能够解决您的问题。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-03
  • 2015-05-17
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多