Manejo de Itextsharp

9
Trozos Un Chunk es la pieza significativa más pequeña de texto que se puede trabajar. Es equivalente ASP.NET es el <asp:Label>. Al igual que con la etiqueta, es necesario tener cuidado de cómo utiliza trozos. El siguiente fragmento muestra cómo configurar el texto de una Chunk, a continuación, escribir al documento PDF 3 veces: string path = Server.MapPath("PDFs"); Rectangle r = new Rectangle(400, 300); Document doc = new Document(r); PdfWriter.GetInstance(doc, new FileStream(path + "/Blocks.pdf", FileMode.Create)); doc.Open(); Chunk c1 = new Chunk("A chunk represents an isolated string. "); for (int i = 1; i < 4; i++) { doc.Add(c1); } El resultado se puede ver a continuación, que muestra el texto de haber sido escrito en el documento pero parece un lío. Trozos tienen ningún concepto de cómo forzar una nueva línea cuando la longitud es superior a la anchura disponible en el documento. En realidad, todo lo que se deben utilizar para es para cambiar o definir el estilo de una palabra o frase en línea. Por supuesto, puedes forzar un salto de línea utilizando "\ n" o Medio Ambiente .NewLine, o incluso Chunk. NEWLINE como parte de la cadena que da un trozo.

description

Itextsharp

Transcript of Manejo de Itextsharp

Page 1: Manejo de Itextsharp

TrozosUn Chunk es la pieza significativa más pequeña de texto que se puede trabajar. Es equivalente ASP.NET

es el <asp:Label>. Al igual que con la etiqueta, es necesario tener cuidado de cómo utiliza trozos. El

siguiente fragmento muestra cómo configurar el texto de una Chunk, a continuación, escribir al

documento PDF 3 veces:

string path = Server.MapPath("PDFs");Rectangle r = new Rectangle(400, 300);Document doc = new Document(r);PdfWriter.GetInstance(doc, new FileStream(path + "/Blocks.pdf", FileMode.Create));doc.Open();Chunk c1 = new Chunk("A chunk represents an isolated string. ");for (int i = 1; i < 4; i++){    doc.Add(c1);}

El resultado se puede ver a continuación, que muestra el texto de haber sido escrito en el documento

pero parece un lío. Trozos tienen ningún concepto de cómo forzar una nueva línea cuando la longitud es

superior a la anchura disponible en el documento. En realidad, todo lo que se deben utilizar para es para

cambiar o definir el estilo de una palabra o frase en línea. Por supuesto, puedes forzar un salto de línea

utilizando "\ n" o Medio Ambiente.NewLine, o incluso Chunk. NEWLINE como parte de la cadena

que da un trozo.

El fragmento tiene una serie de métodos para permitir que hagas esto,

como setUnderLine (), setBackground (), ysetTextRise (), así como una serie de constructores que le

permiten configurar el tipo de letra y sus estilos.

Page 2: Manejo de Itextsharp

 Chunk chunk = new Chunk("Setting the Font", FontFactory.GetFont("dax-black"));chunk.SetUnderline(0.5f, -1.5f); 

FrasesLa frase es la siguiente contenedor de la jerarquía. Una frase es una serie de trozos, y obligará a una

nueva línea cuando la longitud de su contenido excede los márgenes verticales del documento. El

espacio entre cada línea (en realidad, la medida tomada entre las líneas de base de cada línea, o "líder")

es de 1,5 veces el tamaño de la fuente.Dado que el tamaño de fuente por defecto se aplicó por

iTextSharp (12 puntos), el código de abajo resultará en un líder de 16pt. Puede establecer el liderazgo o

la fuente como parte del inicio de una nueva frase, así como pasar una cuerda o trozo de establecer su

contenido a través de varios constructores sobrecargados de la frase. El siguiente fragmento muestra

cómo se añade el trozo anterior a una frase 3 veces, y el resultado.

Phrase phrase = new Phrase();for (int i = 1; i < 4; i++){      phrase.Add(c1);} 

Page 3: Manejo de Itextsharp

PárrafosLo que hemos visto hasta ahora es los bloques muy básicos para texto en archivos PDF. El objeto que

va a utilizar con más frecuencia es un párrafo, que es una secuencia de frases y Trozos celebrado

juntos. Los párrafos se derivan de la frase, para que quepan autommatically texto dentro de los límites

horizontales del documento, sino que también obligan a una nueva línea de cada párrafo (como en

cualquier procesador de texto). El párrafo anterior en la sección Chunk de este artículo es tan bueno

como cualquier otro para experimentar. Cuenta con una serie de frases y un texto con formato en línea,

por lo que puede usarlo para construir un párrafo de trozos y frases:

string path = Server.MapPath("PDFs");Rectangle r = new Rectangle(400, 300);Document doc = new Document(r); try{    PdfWriter.GetInstance(doc, new FileStream(path + "/Blocks2.pdf", FileMode.Create));    doc.Open();     string text = @"The result can be seen below, which shows the text                  having been written to the document but it looks a                  mess. Chunks have no concept of how to force a new                   line when the length exceeds the available width in                  the document. Really, all they should be used for is                  to change or set the style of a word or phrase inline. ";    text = text.Replace(Environment.NewLine, String.Empty).Replace("  ", String.Empty);    Font brown = new Font(Font.COURIER, 9f, Font.NORMAL, new Color(163, 21, 21));    Font lightblue = new Font(Font.COURIER, 9f, Font.NORMAL, new Color(43, 145, 175));    Font courier = new Font(Font.COURIER, 9f);    Font georgia = FontFactory.GetFont("georgia", 10f);    georgia.Color = Color.GRAY;    Chunk beginning = new Chunk(text, georgia);

Page 4: Manejo de Itextsharp

    Phrase p1 = new Phrase(beginning);    Chunk c1 = new Chunk("You can of course force a newline using \"", georgia);    Chunk c2 = new Chunk(@"\n", brown);    Chunk c3 = new Chunk("\" or ", georgia);    Chunk c4 = new Chunk("Environment", lightblue);    Chunk c5 = new Chunk(".NewLine", courier);    Chunk c6 = new Chunk(", or even ", georgia);    Chunk c7 = new Chunk("Chunk", lightblue);    Chunk c8 = new Chunk(".NEWLINE", courier);    Chunk c9 = new Chunk(" as part of the string you give a chunk.", georgia);    Phrase p2 = new Phrase();    p2.Add(c1);    p2.Add(c2);    p2.Add(c3);    p2.Add(c4);    p2.Add(c5);    p2.Add(c6);    p2.Add(c7);    p2.Add(c8);    p2.Add(c9);    Paragraph p = new Paragraph();    p.Add(p1);    p.Add(p2);    doc.Add(p);}catch (DocumentException dex){    throw (dex);}catch (IOException ioex){    throw (ioex);}finally{    doc.Close();} 

First, the result, then some notes about the code:

Page 5: Manejo de Itextsharp

No pasó mucho tiempo para empezar a añadir manejo de excepciones al código. Por supuesto, usted

debe usar siempre try ... catch cuando se realizan operaciones de IO, y con objetos de documento

iTextSharp, también hay unDocumentException objeto de gestionar. Hay otra fuente de excepciones que

he encontrado a ser bastante astuto.Al probar el código para generar el archivo PDF, sin darme cuenta

traspuesto dos argumentos en el constructor de la fuente llamé azul claro, en que pasé en el valor de

fuente .Normal antes de que el tamaño. Esto tuvo el efecto de establecer el tamaño de fuente a 0, que es

el valor que la constante se establece en. Una excepción cuando se trata de llamar doc.Close (), y

tengo que apagar VS para liberar su control sobre el objeto de documento.

Por lo tanto, el manejo de excepciones comienza a hacer su aparición, por lo que se libera al menos el

objeto de documento. También se dará cuenta de que los valores de tamaño de fuente se pasan ahora

con el sufijo fseguirlos. Eso dice explícitamente al compilador que el valor debe ser tratada como un

flotador, y evita el tipo de error que yo experimenté ocurra de nuevo.

El primer bloque de texto, que es @ -quoted, o una cadena literal literal, tiene que tener todo el espacio

en blanco y saltos de línea retirados de ella, de lo contrario, aparecerá con ellos se conserva en el

archivo PDF resultante.Aparte de eso, cada cadena estilo individual se aplica a su propio objeto Chunk, y

después se añadió a una frase para asegurar que las líneas se envuelven en el PDF. Finalmente ambas

frases se añaden al objeto Párrafo único.También es posible ajustar la alineación del texto de párrafo,

utilizando el Paragraph.setAlignment () método. Este acepta una cadena, con "izquierda", "Centro",

"Justify" y "derecha" siendo valores válidos. A continuación se muestra el ejemplo anterior

con p.setAlignment ("Justify");

Page 6: Manejo de Itextsharp

La clase párrafo tiene un número de otros métodos útiles y las propiedades para el peinado incluyendo:

Paragraph.FirstLineIndent  // le permite aplicar un valor flotante a sangrar la primera línea Paragraph.IndentationLeft  // permite agregar espacio a la izquierda Paragraph.IndentationRight // le permite añadir espacio a la derecha Paragraph.setSpacingBefore // añade una determinada cantidad de espacio por encima del párrafo Paragraph.setSpacingAfter  // agrega la cantidad especificada de espacio después del párrafo

using iTextSharp.text;using iTextSharp.text.pdf;

var doc1 = new Document();

//use a variable to let my code fit across the page...string path = Server.MapPath("PDFs");PdfWriter.GetInstance(doc1, new FileStream(path + "/Doc1.pdf", FileMode.Create));doc1.Open();doc1.Add(new Paragraph("My first PDF"));doc1.Close(); public Document(iTextSharp.text.Rectangle pageSize);public Document(iTextSharp.text.Rectangle pageSize, float, float, float, float); var doc = new Document(PageSize.A5);

var doc = new Document(new Rectangle(100f, 300f));PdfWriter.GetInstance(doc, new FileStream(path + "/Doc2.pdf", FileMode.Create));

Page 7: Manejo de Itextsharp

doc.Open();doc.Add(new Paragraph("This is a custom size"));doc.Close();

r.BackgroundColor = new CMYKColor(25, 90, 25, 0);r.BackgroundColor = new Color(191, 64, 124);

.

BaseFont bfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false);Font times = new Font(bfTimes, 12, Font.ITALIC, Color.RED);

string path = Server.MapPath("PDFs");Document doc = new Document();PdfWriter.GetInstance(doc, new FileStream(path + "/Font.pdf", FileMode.Create));doc.Open();doc.Add(new Paragraph("This is a Red Font Test using Times Roman", times));doc.Close(); 

And the result (if all goes well) is as follows:

Page 8: Manejo de Itextsharp

int totalfonts = FontFactory.RegisterDirectory("C:\\WINDOWS\\Fonts");StringBuilder sb = new StringBuilder();foreach (string fontname in FontFactory.RegisteredFonts){  sb.Append(fontname + "\n");}doc.Add(new Paragraph("All Fonts:\n" + sb.ToString()));

Font arial = FontFactory.GetFont("Arial", 28, Color.GRAY);Font verdana = FontFactory.GetFont("Verdana", 16, Font.BOLDITALIC, new Color(125, 88, 15));Font palatino = FontFactory.GetFont( "palatino linotype italique",  BaseFont.CP1252,  BaseFont.EMBEDDED,  10,  Font.ITALIC,  Color.GREEN  );Font smallfont = FontFactory.GetFont("Arial", 7);Font x = FontFactory.GetFont("nina fett");x.Size = 10;x.SetStyle("Italic");x.SetColor(100, 50, 200);