Tengo una pregunta aparentemente simple, pero no puedo encontrar la respuesta. Tengo un formulario pdf preexistente. Rellenando el formulario manualmente, uno de sus campos de texto muestra su valor en negrita. Al usar HexaPdf para llenar este campo, el texto también debe aparecer en negrita, pero aparece en letra normal.
Lleno el campo con
doc.acro_form.field_by_name('text1').field_value = @record.valuePara que esto se muestre en negrita, he intentado lo siguiente, sin éxito:
doc.acro_form.field_by_name('text1').set_default_appearance_string(font: 'Helvetica-Bold', font_size: 0)Aparece el mensaje de error "No se pudo encontrar la fuente solicitada 'Helvetica-Bold' en la variante 'ninguna'".
Entonces probé:
doc.acro_form.field_by_name('text1').set_default_appearance_string(font: 'Helvetica', variant: :bold, font_size: 0)Esto obtiene: "palabra clave desconocida: variante".
Las fuentes configuradas para el documento son:
{"Times"=>[:ninguno, :negrita, :cursiva, :bold_italic], "Helvetica"=>[:ninguno, :bold, :italic, :bold_italic], "Courier"=>[:ninguno, :bold , :cursiva, :bold_italic], "Símbolo"=>[:ninguno], "ZapfDingbats"=>[:ninguno]}
Así que Helvetica con la variante :negrita debería estar disponible.
¿Podría alguien decirme la sintaxis correcta? ¡Gracias por adelantado!
Recibí esta respuesta de @gettalong en github:
"De hecho, es un problema ya que no hay forma de hacer esto actualmente con ese método; lo arreglaré para la próxima versión. Puede usar la siguiente solución hasta entonces:"
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"¡Muchos gracias!
Con la versión HexaPDF 0.18.0, esto ahora es directamente posible usando el argumento font_options para #set_default_appearance_string . ¡No se necesitan más soluciones alternativas!