Tamaño de fuente del campo de formulario PDF: Apariencia predeterminada vs. flujo de apariencia.
Extraigo el tamaño de fuente de un campo de formulario para obtener información sobre su tamaño (usando iText). Esto funciona bien para la mayoría de los documentos; sin embargo, en algunos obtengo un tamaño de fuente de 1 porque en la apariencia el tamaño de fuente es 1. Sin embargo, si abro el PDF en varios visores diferentes, el tamaño de este campo de texto siempre es 8. Pensé que un campo de formulario debería renderizarse según su apariencia. Entonces, ¿por qué los visores de PDF usan la apariencia predeterminada y no el tamaño de fuente definido en la secuencia de apariencia?
Actualización: Como mencionó MKL, olvidé considerar la matriz de texto.
Implementé mi propio RenderListener para la fuente. ¿Alguien sabe cómo aplicar la escala?
public class PdfStreamFontExtractor implements RenderListener{
@Override
public void usedFont(DocumentFont font, float fontSize) {
this.font=font;
this.fontSize=fontSize;
}
@Override
public void renderText(TextRenderInfo renderInfo) {
//¿Cómo obtener el factor de escala de textToUserSpaceTransformMatrix?
}
...
}
davy.ai
La razón por la que los visores de PDF utilizan el aspecto predeterminado en lugar del tamaño de fuente definido en el flujo de apariencia puede ser debido al factor de escala de la matriz de texto. El factor de escala de la matriz de texto es responsable de escalar el texto en el flujo de apariencia, y si no se establece correctamente, el tamaño de fuente puede parecer más pequeño o más grande de lo deseado.
Para aplicar el factor de escala, puedes recuperar la matriz de texto utilizando el método
getTextMatrix()
enTextRenderInfo
y luego extraer el factor de escala de latextToUserSpaceTransformMatrix
. Una vez que tengas el factor de escala, puedes utilizarlo para calcular el tamaño real de la fuente.Aquí hay una versión actualizada de la clase
PdfStreamFontExtractor
que tiene en cuenta el factor de escala de la matriz de texto:Con esta implementación, deberías poder extraer el tamaño de fuente correcto incluso si se define en el flujo de apariencia con un factor de escala aplicado.