java - iText:按钮调整大小会影响标签

标签 java itext

我正在尝试调整现有 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/

相关文章:

java - 配置 Eclipse 以在新模块的顶部添加注释 header

java - 如何构造 SQL 语句以避免过多的连接

Java : Inner class of an interface (from google guice)

java - 无法使用 Spring 和 Thymeleaf 传输 View 上的对象

java - 想要查看 Eclipse 中一个 Java 对象使用的内存

java - android studio design 和 v7 中的导入错误 - Android Studio -

c# - 从 html 创建 pdf 时,如何隐藏具有特定类的图像?

asp.net - 使用 ITextSharp 流式传输分割的 pdf 以将其存储在 Azure 中

html - CSS 打印模式 - 最后一页底部的 Div

javascript - Itext 或 Adob​​e Acrobat 上的行间距