hmpaquito wrote:
Un camino un poco parecido seguí yo. Contacté con el creador de img2pdf.dll, y cuando me dijo, o eso entendí yo del inglés, que para los pdfs. había que tener algunas fuentes instaladas y que podrían no mostrarse bien o distintas, ya no seguí con la herramienta. No podía tener pdfs que dentro de N años no se mostraran bien porque el SO hubiera cambiado.
Justamente el problema que tenía este señor era que él tenia una lista de nombres de fonts y sus ficheros que no coincidían segun diferentes versiones de Windows, y empeoraba al cambiar de idioma.
hmpaquito wrote:
Mi intención es que pdfPrinter sea compatible 100% con TPrinter, de manera que cambiando el constructor funcione todo. Pretendía tener una salida automática a pdf, compatible con el código existente que ya tengo usado para el dispositivo TPrinter, pero en mis fuentes hay definicion de fonts en multiples sitios y no todos al principio del programa.
La definición de los FONTs no está en la clase TPrinter, con lo que ya estamos hablando de otra cosa. Si en la clase TPrinter estuvieran incluídas las definiciones de FONTs, todo seria más sencillo, porque habría un lugar por donde 'atacar', pero la declaración de los fonts va de manera independiente.
La via más apropiada y elegante podría ser incluir en una subclase de TPrinter la declaración de las fuentes, y usar esa subclase en tu código. De esa manera tendrías algo bastante más aproximado a lo que buscas.
hmpaquito wrote:
Debe ser mi ignorancia, pero pensé que no era demasiado difícil, y que se trataria de:
1. Buscar fichero fuente .ttf según si normal/ bold/ italic
2. Si no encuentra fichero, aplicar el mas parecido
Esto es lo que yo no le veo solución. Define 'parecido' en terminos de font.
hmpaquito wrote:
3. Sacar lista con aquellos que no coinciden para ir perfilando
Eso se puede hacer manualmente. De forma predeterminada, el módulo que gestiona fonts tiene una lista con los más usados: Arial, Verdana, Calibri, etc. Esa lista se puede ampliar sin problemas.
hmpaquito wrote:
Se podria hacer una lista de archivos .ttf según version Windows e idioma de Windows.
hmpaquito wrote:
Aquí https://community.microstrategy.com/t5/ ... a-p/207606 siguen la estrategia de cambiar a Courier New cuando encuentran un font no existente.
Lo curioso es que Word transforma a pdf con exactitud 100%. ¿ Es que va a ser Word más que nosotros ?
Siempre lo será. Microsoft juega con toda la baraja, nosotros con suerte menos de la mitad. En guor declaras las fuentes en el equipo que lo vas a usar, de una lista de fuentes instaladas que obtienes del propio ssoo. Eso lo puedes hacer sin problemas. Estamos hablando de una cosa 100% diferente: Alguien dice "Desdemona Black" y tu a partir de eso vas a buscar una definición que sea digerible en el idioma del pdf, adivinando el fichero ttf y demás. Y puede que en el equipo de testing Desdemona Black tenga significado, pero en el equipo del cliente eso no exista. Almomento de definir un FONT, dependemos mucho de la información del ambiente de ejecución, que no es el de desarrollo.
Por supuesto que cuentas con todo mi apoyo si te pones con ellos. Si es por cuestión de orden, yo sugiero añadir un metodo DefineFont en la TPrinter, o una subclase, para poder homogeneizar tu propio código, sino ya tendrías que tocar la declaracion de las fuentes, que se va mucho de contexto. Y todo esto garantizando que la librería sigue siendo "GUI agnostic" y se puede usar en consola.