una recortar quitar que programacion longitud extraer ejemplos caracteres cadena c# string pdf char pdfsharp

c# - recortar - Encuentra el ancho del char en píxeles para varias fuentes Arial



recortar string c# (3)

No estoy seguro de su pregunta si desea una forma de medir el tamaño de una cadena específicamente usando PDF #, o simplemente de una manera genérica.

En general .Net, puede usar el método MeasureText de la clase TextRenderer (desde formularios de Windows):

TextRenderer.MeasureText("some text", new Font("Arial", 1.0f, FontStyle.Regular))

Esto devolverá una instancia de Size que contendrá Width=12, Height=2 .

Tengo un programa que genera manualmente un PDF usando PDFsharp en C #. Aunque es bastante tedioso, tengo que usarlo y estoy a punto de completar la tarea. Solo queda un problema.

Problema: me pregunto cómo puedo averiguar cuál es el ancho de un dado dado para un tamaño de letra dado en Arial.

Tengo problemas para encontrar un método de ajuste de texto más preciso. En este momento, uno define el ancho del cuadro en píxeles y luego procede a escribir una cadena en ese cuadro. Simplemente adivino la longitud máxima de la cuerda que cabe en la caja y hay algunas rarezas visuales que surgen de vez en cuando.

¿Alguna ayuda?

Gracias


XGraphics.MeasureString (string s, Font f) hace el truco.

//l_Page is of type PdfPage var l_Graphics = XGraphics.FromPdfPage( l_Page ); var l_TitleFont = new Font( "Arial", 15f, GraphicsUnit.World ) var l_Title = "Hallo Welt"; //l_TitleSize will be of type XSize and has properties for Width and Height var l_TitleSize = l_Graphics.MeasureString( l_Title, l_TitleFont );


En los días de las fuentes True Type con interletraje, etc., no hay un solo ancho de carácter. El ancho de la cuerda "VA" es probablemente menor que la suma de los anchos de las cuerdas "V" y "A". Resumiendo los anchos si los personajes individuales son un punto de partida, pero finalmente debe medir la cadena completa.

PDFsharp incluye la clase XTextFormatter (con código fuente completo) que hace este ajuste de línea. Se puede adaptar a requisitos específicos. Utiliza gfx.MeasureString(token, this.font).Width para medir el ancho de una cadena.