我在使用AcroForm CheckBox时遇到了一些非常大的问题。
1. Adobe Reader DC不打印CheckBox(处于选中状态)。即使在设置了相应的FieldFlag之后。也许这是因为我的计算机上没有ZapfDingsbats字体?
2.如何为复选框的不同外观使用的所有符号(开/关状态)更改此字体(我想使用Wingdings)?
3.最后但并非最不重要:如何在未经检查的CheckBox周围绘制边框?
非常感谢每一个提示和帮助!
package jumpstart;
import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import com.itextpdf.forms.PdfAcroForm;
import com.itextpdf.forms.fields.PdfButtonFormField;
import com.itextpdf.forms.fields.PdfFormField;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfWriter;
public class Problem6 {
public static void main(String[] args) throws IOException {
PdfWriter writer = new PdfWriter("problem6.pdf");
PdfDocument pdf = new PdfDocument(writer);
PdfPage page = pdf.addNewPage();
PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, true);
PdfButtonFormField checkBox = PdfFormField.createCheckBox(pdf, new Rectangle(75, 750, 20, 20), "cbName1", "On",
PdfFormField.TYPE_CROSS);
// checkBox.setFieldFlag(PdfAnnotation.PRINT);
form.addField(checkBox, page);
pdf.close();
Desktop.getDesktop().open(new File("problem6.pdf"));
}
}
答案 0 :(得分:2)
第1部分。要使PdfFormField
可打印,您应该使用以下方法:
checkBox.setVisibility(PdfFormField.VISIBLE);
第2部分。在您的特定情况下,复选框的外观使用画布说明绘制,而不是任何字体。这就是它的完成方式:
q
Q
0 20 m
20 0 l
20 20 m
0 0 l
S
第3部分。如您所见,没有使用字体,十字形用线条绘制。
因此,不可能轻易使用不同的字体。您可以创建自己的外观流并通过PdfFormField#setAppearance
进行设置。但你必须非常小心并知道自己在做什么。
您可以使用以下行设置字段边框:
checkBox.setBorderWidth(1);
checkBox.setBorderColor(ColorConstants.BLACK);
但这会为所有外观设置边框,包括On
和Off
。如果您希望仅为Off
外观绘制边框,则应创建自定义外观并使用PdfFormField#setAppearance
。
<强> P.S 即可。请另外提问。你问的三个问题是不同的。