如何根据内容定义页面大小?

How to define the page size based on the content?

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

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

如果您创建 PdfPTable 并且定义 table 的宽度,例如:

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

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

Float h = table.TotalHeight;

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

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

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