私はこのコードを使用してPDFファイルにコンボボックスを作成します。それには2つの問題があります。PDFBoxの奇妙なコンボボックスの動作
- コンボボックスを開いたときに特殊文字(öなど)が正しく表示されますが、コンボボックスが閉じているときは表示できません。
- AcrobatでPDFを開くと、値を変更してPDFを保存すると、コンボボックスが何とか消えてしまいます。 PDFをもう一度開くと、もう表示されません。
PDFBoxクラスで何か問題があったのですか、それとも問題がありますか?ここで
は開いた状態での画像です:
、ここでは、閉じた状態でのものです:あなたのコードの終わり近く
public class ComboTest {
public static void main(String[] args) {
PDFont font = PDType1Font.HELVETICA;
Color color = Color.BLACK;
float fontSize = 12;
PDDocument document = new PDDocument();
PDPage page = new PDPage(PDRectangle.A4);
document.addPage(page);
PDAcroForm acroForm = new PDAcroForm(document);
PDComboBox comboBox = new PDComboBox(acroForm);
comboBox.setPartialName("test");
String defaultAppearanceString = "/" + font.getName() + " " + fontSize + " Tf "
+ 0 + " " + 0 + " " + 0 + " rg";
comboBox.setDefaultAppearance(defaultAppearanceString);
PDAnnotationWidget widget = new PDAnnotationWidget();
widget.setRectangle(new PDRectangle(200, 200, 100, 20));
widget.setAnnotationFlags(4);
widget.setPage(page);
widget.setParent(comboBox);
List<String> exportValues = new ArrayList<>();
List<String> displayValues = new ArrayList<>();
displayValues.add("öne");
displayValues.add("two");
displayValues.add("thrée");
exportValues.add("1");
exportValues.add("2");
exportValues.add("3");
comboBox.setOptions(exportValues, displayValues);
List<PDAnnotationWidget> widgets = new ArrayList<>();
widgets.add(widget);
try {
page.getAnnotations().add(widget);
} catch (IOException e) {
e.printStackTrace();
}
comboBox.setWidgets(widgets);
try {
FileOutputStream output = new FileOutputStream("test.pdf");
document.save(output);
} catch (IOException e) {
e.printStackTrace();
}
}
}
)、あなたのコードにこれを追加すること: 'acroForm.getFields()(コンボボックス)を追加します。 document.getDocumentCatalog()。setAcroForm(acroForm); '。このコードはどこで入手できましたか? –
私はインターネット上で例を見つけませんでしたので、私は自分自身を試しました。これはうまくいきましたが、今はもう消えません。 – user489872
re 1)、font.getName()を "Helv"に置き換えます。これがなぜそうであるか分かりません。 –