Как (вертикально) выровнять текст PDTextField в PDFBox? - PullRequest
1 голос
/ 05 июня 2019

Я написал форму с LibreOffice, которая включает в себя некоторые именованные поля для заполнения через PdfBox.Поля правильно настроены с выравниванием текста (все по центру по левому краю), но PdfBox просто игнорирует вертикальное выравнивание.Как на текстовых полях, так и на этикетках.Поля выравниваются снизу, а метки сверху.Помимо оптической разницы в представлении, значения полей также обрезаются строчными буквами, такими как "g" и т. Д.

Я бы предоставил изображение, но у меня недостаточно репутации ...

При условии, что я не могу быть единственным с этой проблемой, я нашел этот ответ здесь на SO Как (горизонтально) выровнять текст PDTextField в PDFBox? .Упоминается функция, которая предоставляет эту функцию для горизонтального выравнивания

textBox.setQ(PDTextField.QUADDING_CENTERED);

Я проверил это, и оно работает.

Общий вызов в моей программе довольно прост:

PDDocumentCatalog docCatalog = _pdf.getDocumentCatalog();
PDAcroForm acroForm = docCatalog.getAcroForm();
PDTextField field = (PDTextField) acroForm.getField(name);
if (field != null)
{
    field.setQ(PDTextField.QUADDING_LEFT);
    field.setValue(value);
}
else
{
    LOGGER.log(Level.ERROR, "No field found with name:" + name);
}

К сожалению (или из-за глупости с моей стороны; я виню в этом температуру), я не нашел способа заставить PdfBox выполнить какие-либо действия на вертикальной оси.

Любая помощь будет очень полезной.оценили.Спасибо.

РЕДАКТИРОВАТЬ:

В соответствии с запросом здесь приводится пример (не настоящая версия, потому что это документ с работы - тем не менее, это та же конструкция, что иоригинал):

https://drive.google.com/file/d/1JKyuFqkb9B8Q9M61uxncAJXzMOo7zvJ5/view?usp=sharing

Поле с именем err_desc.Также я предоставил в документе pdf изображение результата в оригинальной заполненной форме.

Я также попытался просто увеличить вертикальное пространство текстового поля.К сожалению, это не сработало, так как текст, кажется, придерживался дна и просто оставлял больше места над текстом.

...