【问题标题】:How to define the page size based on the content?如何根据内容定义页面大小?
【发布时间】:2015-10-18 22:28:43
【问题描述】:

我正在使用 iTextSharp 生成 PDF 文档。该文件必须只有一页。换句话说,内容必须适合页面大小。 是否可以使用 iTextSharp 实现这一目标?

我尝试在将内容添加到文档之前获取内容的高度,因此我可以在创建文档之前计算总大小, 但是某些内容类型(例如表格)在添加到文档之前没有高度。

【问题讨论】:

  • 如果您在模拟模式下将所有内容添加到ColumnText 对象,您可以向ColumnText 询问“消耗”的高度。使用该高度来定义您的页面高度。见Adjust page height to content height。另一种选择是使用PdfPTable,如下所示:How to resize a PdfPTable to fit the page?
  • 感谢您的回答,但我已经完成了创建临时文档并添加包含所有内容的 PdfPTable 的工作。这样做,我得到了总大小,然后在一个与表格大小相同的新文档中使用它。
  • 第二个选项不适用于我的上下文,因为我不希望表格适合页面大小,我需要页面适合表格大小。跨度>
  • 您不需要创建临时文档。如果您定义表格的宽度,您还可以定义它的总高度并使用它来定义页面大小。
  • 我添加了一个答案,向您展示它是如何在不创建临时文档的情况下完成的。这将节省您的时间和 CPU。

标签: c# itextsharp


【解决方案1】:

如果您创建一个PdfPTable 并定义表格的宽度,例如这样:

table.TotalWidth = 400f;
table.LockedWidth = true;

然后你可以像这样询问table的高度:

Float h = table.TotalHeight;

您可以使用h 来定义您的页面大小,例如:

Document document = new Document(400, h, 0, 0, 0, 0);

请注意,所有测量均以用户单位进行,默认情况下一个用户单位等于 1 pt。如果不定义宽度,getTotalHeight() 方法将返回 0,因为高度取决于宽度,而 table 在渲染之前不知道宽度。

【讨论】:

  • 再次感谢您。我更改了我的代码,现在它运行得更好并且没有解决方法。
猜你喜欢
  • 1970-01-01
  • 2014-05-03
  • 2014-08-31
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 2020-02-28
  • 2013-11-16
相关资源
最近更新 更多