#ruby #pdf
Вопрос:
У меня есть, казалось бы, простой вопрос, но я не могу найти на него ответа. У меня есть уже существующая форма pdf. Заполняя форму вручную, одно из ее текстовых полей показывает свое значение жирным шрифтом. При использовании HexaPdf для заполнения этого поля текст также должен быть выделен жирным шрифтом, но он отображается обычным шрифтом.
Я заполняю поле с
doc.acro_form.field_by_name('text1').field_value = @record.value
Чтобы это было показано жирным шрифтом, я попробовал следующее, но безрезультатно:
doc.acro_form.field_by_name('text1').set_default_appearance_string(font: 'Helvetica-Bold', font_size: 0)
При этом появляется сообщение об ошибке «Запрошенный шрифт ‘Helvetica-Полужирный’ в варианте «нет» не найден».
Затем я попытался:
doc.acro_form.field_by_name('text1').set_default_appearance_string(font: 'Helvetica', variant: :bold, font_size: 0)
При этом получается: «неизвестное ключевое слово: вариант».
Настроенные шрифты для документа следующие:
{«Времена»=>[:нет, :полужирный, :курсив, :полужирный], «Гельветика»=>>[:нет, :полужирный, :курсив, :полужирный], «Курьер»=>>>[:нет, :полужирный, :курсив, :полужирный], «Символ»=>>>>[:нет], «ZapfDingbats»=>>>>>[:нет]}
Таким образом, Helvetica с вариантом :жирный шрифт должен быть доступен.
Не мог бы кто-нибудь, пожалуйста, сообщить мне правильный синтаксис? Заранее спасибо!
Комментарии:
1. Может быть, @gettalong подскажет мне, как это сделать? Если да, то большое спасибо!
2. @K J: Я считаю, что это не тот же самый случай. В ссылке, которую вы упомянули, проблема в том, что шрифт недоступен. В моем случае, однако, я просто хочу использовать стандартный шрифт. Ссылка на gitter, к сожалению, похоже, не работает — там будет больше информации?
3. Прежде чем я подниму вопрос, я хотел бы убедиться, что это не просто оплошность с моей стороны. Если я правильно понимаю, set_default_appearance_string принимает параметр шрифта, который, как ожидается, будет строкой. В соответствии с hexapdf/lib/hexapdf/type/font_type1.rb строка 58 я ожидаю, что имя шрифта «Helvetica-Жирный» будет доступно. Нет ли способа использовать это в моем случае? Или мне чего-то не хватает в правильном синтаксисе?
4. @K J, спасибо, что подумал об этом со мной! Проблема с этим синтаксисом заключается в том, что я получаю ошибку «неизвестное ключевое слово: вариант».
Ответ №1:
Я получил этот ответ от @gettalong на github:
«Это действительно проблема, так как в настоящее время нет способа сделать это с помощью этого метода — я исправлю это для следующего выпуска. До тех пор вы можете использовать следующий обходной путь:»
name = doc.acro_form.default_resources.add_font(doc.fonts.add('Helvetica', variant: :bold).pdf_object)
doc.acro_form.field_by_name('text1')[:DA] = "0 g /#{name} 0 Tf"
Большое спасибо!
Ответ №2:
С выпуском HexaPDF 0.18.0 это теперь стало возможным напрямую с помощью font_options
аргумента for #set_default_appearance_string
. Больше никаких обходных путей не требуется!