gpt4 book ai didi

java - 无法使用 iText PdfDiv 绝对位置

转载 作者:行者123 更新时间:2023-12-01 12:39:41 27 4
gpt4 key购买 nike

enter image description here我在java中使用iText-5.5.2来生成pdf文件。我在另一个 PdfDiv 中有一个 PdfDiv,并且希望将 Div2 上的位置设置为绝对位置以管理 Div2 的位置。 Position = Absolute 不起作用,当我将其设置为绝对时,div2 仅显示在其静态位置。但位置=相对和静态是有效的。图像显示了我总是得到的结果,我可以得到正确的顶部来显示。当 PdfDiv Position = Absolute 时 itext 中是否存在错误或者我犯了一个错误?

    PdfDiv laDivPrint = new PdfDiv();
laDivPrint.setPosition(PdfDiv.PositionType.RELATIVE);
laDivPrint.setWidth(101);
laDivPrint.setHeight(100);

PdfDiv laDivText = new PdfDiv();
laDivText.setPosition(PositionType.ABSOLUTE);

laDivText.setWidth((float) 100);
laDivText.setHeight((float) 10);
laDivText.setTop((float) 20);
laDivText.setLeft((float) 0);
Chunk laChunk = new Chunk("Adam Song");
laDivText.addElement(laChunk);

laDivPrint.addElement(laDivText);

PdfDiv laDivText2 = new PdfDiv();
laDivText2.setPosition(PositionType.ABSOLUTE);

laDivText2.setWidth((float) 100);
laDivText2.setHeight((float) 10);
laDivText2.setTop((float) 50);
laDivText2.setLeft((float) 0);
Chunk laChunk2 = new Chunk("My Company");
laDivText2.addElement(laChunk2);

laDivPrint.addElement(laDivText2);

最佳答案

再考虑一下并查看您的图片,我只会使用普通的 PdfPTable。如果您有网络背景,您可能会对表格产生内在的厌恶,但它们实际上是有用途的。如果您还记得我们过去在网络上将事物切片到表格中的情况,您会记得这是“错误的”,因为事物无法轻松移动。然而,在 PDF 中,事物不应该四处移动,因此这种范例实际上更有意义。

(实际上,PDF 中实际上不存在“div”或“表格”。您所做的任何操作都将始终归结为文本、线条和图像的绝对位置。iText 只是提供了方便的抽象来执行困惑的操作为您计算。)

我是一名 .Net 人员,所以我使用 C# 工作,但我会尝试在这里使用 Java 编写。我不能保证 100% 编译,但应该非常接近。

首先,为您的单元创建一个简单的工厂方法。您需要在此处设置共享属性,并可能根据需要添加一些其他参数。

private static PdfPCell CreateCell(String text, BaseColor backgroundColor) {
PdfPCell c = new PdfPCell(new Phrase(text));
c.setBackgroundColor( backgroundColor );
c.setPadding( 20 );
c.setBorder( 0 );

return c;
}

当您创建文档时,去掉边距:

document.setMargins(0, 0, 0, 0);

然后创建您的表:

//Create a one column table
PdfPTable t = new PdfPTable(1);

//Tell it to use 100% of the page's width
t.WidthPercentage = 100;

//Create two rows with different colors
t.addCell(CreateCell("Hello", BaseColor.BLUE));
t.addCell(CreateCell("World", BaseColor.YELLOW));

//Add table to document
document.add(t);

这段代码应该给你一些类似的东西:

enter image description here

关于java - 无法使用 iText PdfDiv 绝对位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25231323/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com