tipo times roman new letra gothic getfont fontfactory font color change century c# pdf fonts itextsharp

c# - times - itextsharp text



Uso de fuentes en el sistema con iTextSharp (3)

Primero, debe registrar la fuente y luego simplemente recuperarla de FontFactory (y no la cree cada vez):

public static iTextSharp.text.Font GetTahoma() { var fontName = "Tahoma"; if (!FontFactory.IsRegistered(fontName)) { var fontPath = Environment.GetEnvironmentVariable("SystemRoot") + "//fonts//tahoma.ttf"; FontFactory.Register(fontPath); } return FontFactory.GetFont(fontName, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); }

Quiero usar iTextSharp para escribir algo de texto. Estoy usando este método:

var font = BaseFont.CreateFont(BaseFont.TIMES_BOLD, BaseFont.WINANSI, BaseFont.EMBEDDED);

Mi pregunta es: iTextSharp admite todas las fuentes en el directorio de fuentes del sistema?

Supongamos que tengo una fuente llamada ''mycoolfont'' seleccionada por el usuario en el cuadro de diálogo del selector de fuente. ¿Puedo crear una nueva fuente iTextSharp como esta?

var font = BaseFont.CreateFont("mycoolfont", BaseFont.WINANSI, BaseFont.EMBEDDED); overContent.SetFontAndSize(font, fontSize);

ACTUALIZAR:

var font = BaseFont.CreateFont("Verdana", BaseFont.WINANSI, BaseFont.EMBEDDED); pero el error "Verdana" no es reconocido por itextsharp


Terminé combinando las 2 respuestas aquí en este método:

public static Font GetFont(string fontName, string filename) { if (!FontFactory.IsRegistered(fontName)) { var fontPath = Environment.GetEnvironmentVariable("SystemRoot") + "//fonts//" + filename; FontFactory.Register(fontPath); } return FontFactory.GetFont(fontName, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); }

Que luego uso en mi código como tal:

writer.DirectContent.SetFontAndSize(GetFont("Franklin Gothic Medium Cond", "FRAMDCN.TTF").BaseFont, 24f);

En Windows puede encontrar el nombre de archivo de la fuente desde la hoja de propiedades de la fuente:

También descubrí que debes usar el nombre exacto de la fuente en la pestaña Detalles:


Estoy publicando esto ya que alguien más podría encontrarlo útil. Tuve un problema similar cuando ejecuté mi código en el servidor. La razón por la cual itextsharp no pudo encontrar el estilo de fuente en el sistema operativo. Mi PDF mostró un estilo de fuente aleatorio cuando no pudo encontrar la fuente (error de tiro). Copié los archivos de fuente requeridos (.ttf) a la carpeta bin de mi proyecto y usé el siguiente código.

public static BaseFont GetFont(string fontName) { return BaseFont.CreateFont(HttpContext.Current.Server.MapPath("~/Bin/" + fontName + ".ttf"), BaseFont.CP1252, BaseFont.EMBEDDED); }

Aquí obtengo la fuente deseada

`BaseFont sm = GetFont("comic"); //The fontName here should exactly match` the` file name in bin folder