我正在尝试调整现有 PDF 按钮的大小。我想将标签从“打印”修改为“打印修改”。
PushbuttonField button = form.getNewPushbuttonFromField("HoldButton");
Rectangle box = button.getBox();
box.setRight(box.getRight() + 72); // Increase width by 1"
button.setBox(box);
button.setText("Print Amended");
form.replacePushbuttonField("HoldButton", button.getField());
上面的代码成功更改了标签,但没有更改大小。最终结果是一个宽度没有变化的按钮,并且标签“打印修改”挤在一起。
是否可以调整 iText 中现有按钮的大小?
最佳答案
我尝试了您的示例,令我惊讶的是我可以重现您的问题。
我查看了 iText 代码,发现明确禁止更改 /T
值。这是有道理的:如果您想替换现有按钮,您不想更改其名称。
但是,由于某种原因,我们也明确禁止更改 /Rect
值。查看AcroFields
类的代码:
for (Object element : button.getKeys()) {
PdfName key = (PdfName)element;
if (key.equals(PdfName.T) || key.equals(PdfName.RECT))
continue;
if (key.equals(PdfName.FF))
values.put(key, button.get(key));
else
widgets.put(key, button.get(key));
merged.put(key, button.get(key));
markUsed(values);
markUsed(widgets);
}
我不确定我们在编写这段代码时为什么做出这个决定。如果我删除 || key.equals(PdfName.RECT)
,那么您的代码将按预期工作。
由于我们故意排除了更改按钮尺寸的可能性,因此我怀疑这是否是一个错误,或者我们是否故意在那里添加了该代码。阅读您的要求,我倾向于删除 || key.equals(PdfName.RECT)
来自官方源代码。
PS:我知道这并不能回答您的问题,但它确实解释了为什么您的代码不起作用,尽管它看起来完全正常。正如我所解释的:我真的很惊讶它不起作用,因为我负责 iText 代码......
PS 2:我已经更改了官方trunk中的代码.
关于java - iText:按钮调整大小会影响标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26804092/