Java PDFBox установка пользовательского шрифта для нескольких полей в PDF-форме

Я использую Apache PDFBox для чтения заполняемой формы PDF и заполнения полей на основе некоторых данных. Я использую приведенный ниже код (согласно предложениям из других ответов SO), чтобы получить строку внешнего вида по умолчанию и меняю ее (как вы можете видеть ниже, я изменяю размер шрифта с 10 до 12, если имя поля равно «Field1»).

Как мне выделить поле? Любая документация о том, в каком порядке / Helv 10 Tf 0 г расположены? Что мне нужно установить, чтобы выделить поле?Если я правильно понимаю, есть 14 основных шрифтов, которые я могу использовать в PDFBox из коробки (каламбур непреднамеренный). Я хотел бы использовать один или несколько шрифтов, которые выглядят как подписи (курсив). Какие-нибудь из готовых шрифтов, которые это делают? Если нет, если у меня есть собственный шрифт, как мне установить метод записи в PDF?

Обратите внимание, что приведенный ниже код работает нормально, заполняя определенное «значение», переданное в параметре метода, в специальное поле «имя» параметра метода.

Спасибо !

public static void setField(String name, String value ) throws     IOException {
    PDDocumentCatalog docCatalog = _pdfDocument.getDocumentCatalog();
    PDAcroForm acroForm = docCatalog.getAcroForm();
    PDField field = acroForm.getField( name );

    COSDictionary dict = ((PDField)field).getDictionary();
    COSString defaultAppearance = (COSString) dict.getDictionaryObject(COSName.DA);
    if (defaultAppearance != null)
    {
        dict.setString(COSName.DA, "/Helv 10 Tf 0 g");
        if(name.equalsIgnoreCase("Field1"))
        {
            dict.setString(COSName.DA, "/Helv 12 Tf 0 g");
        }
    }
    if(field instanceof PDTextbox)
    {
        field= new PDTextbox(acroForm, dict);
        ((PDField)field).setValue(value);
    }

Согласно ответу mkl, чтобы использовать два шрифта в одном и том же PDF, я использовал следующий метод: я не мог заставить шрифт по умолчанию и собственный шрифт работать вместе, поэтому я добавил два шрифта к ресурсам и использовал их.

public List<String> prepareFont(PDDocument _pdfDocument) throws IOException
{
    PDDocumentCatalog docCatalog = _pdfDocument.getDocumentCatalog();
    PDAcroForm acroForm = docCatalog.getAcroForm();

    PDResources res = acroForm.getDefaultResources();
    if (res == null)
        res = new PDResources();

    InputStream fontStream = getClass().getResourceAsStream("LiberationSans-Regular.ttf");
InputStream fontStream2 = getClass().getResourceAsStream("Font2.ttf");
    PDTrueTypeFont font = PDTrueTypeFont.loadTTF(_pdfDocument, fontStream);
PDTrueTypeFont font2 = PDTrueTypeFont.loadTTF(_pdfDocument, fontStream2);
    String fontName = res.addFont(font); 
String fontName2 = res.addFont(font2);
    acroForm.setDefaultResources(res);
    List<String> fontList = new ArrayList<String>();    fontList.add(font1);fontList.add(font2);
    return fontList;
}

Ответы на вопрос(1)

Ваш ответ на вопрос