tabla pdfwriter pagesize examples example crear c# asp.net pdf itextsharp barcode

c# - pdfwriter - Generar PDF con iTextSharp



pagesize itextsharp (2)

mira esto;

http://www.mikesdotnetting.com/Article/87/iTextSharp-Working-with-images

También esto para todas las publicaciones relacionadas con itextsharp;

http://www.mikesdotnetting.com/Category/20

Estoy tratando de agregar una imagen a la parte superior de cada página en un PDF existente. He intentado usar PdfStamp, pero por alguna razón cuando intento imprimir el pdf desde Chrome, todo lo que obtengo es una página negra. Además, Adobe Reader solo muestra el documento original. ¿Alguien tiene alguna idea sobre cómo hacerlo funcionar? Aquí está el código.

public partial class MakePdf : System.Web.UI.Page { public MemoryStream m = new MemoryStream(); protected void Page_Load(object sender, EventArgs e) { Document document = new Document(PageSize.LETTER); Response.ContentType = "application/pdf"; string RESULT = @"C:/Users/maitchison/Documents/Pdf/Service Report Search - 650-10-067 4114.pdf"; PdfReader reader = new PdfReader(RESULT); PdfStamper stamp = new PdfStamper(reader, m); try { // Set ContentType and create an instance of the Writer. Response.ContentType = "application/pdf"; PdfWriter writer = PdfWriter.GetInstance(document, m); writer.CloseStream = false; // Open Document document.Open(); int n = reader.NumberOfPages; int i = 1; PdfContentByte cb = writer.DirectContent; PdfContentByte over; Barcode128 barcode128 = new Barcode128(); string text2 = "650-M5-013"; barcode128.Code = text2; barcode128.ChecksumText = true; float x = document.Right; float y = document.Top; iTextSharp.text.Image img2 = barcode128.CreateImageWithBarcode(cb, null, null); img2.SetAbsolutePosition((x - img2.ScaledWidth), (y - img2.ScaledHeight)); while (i <= n) { over = stamp.GetOverContent(i); over.AddImage(img2); i++; } } catch (DocumentException ex) { Console.Error.WriteLine(ex.StackTrace); Console.Error.WriteLine(ex.Message); } // Close document stamp.Close(); //document.Close(); // Write pdf bytes to outputstream. Response.OutputStream.Write(m.GetBuffer(), 0, m.GetBuffer().Length); Response.OutputStream.Flush(); Response.OutputStream.Close(); m.Close(); } }

}


¿la muestra de código que proporcionó incluso genera un PDF? Parece que probaste diferentes formas de agregar la imagen del código de barras y terminaste con un código excesivo que confundía las cosas ... me confundió ;-)

de todos modos, aquí hay una forma de lograr tu objetivo con PdfStamper como lo intentaste; ejemplo de controlador HTTP (.ashx):

<%@ WebHandler Language=''C#'' Class=''addBarcodeWithStamper'' %> using System; using System.IO; using System.Web; using iTextSharp.text; using iTextSharp.text.pdf; public class addBarcodeWithStamper : IHttpHandler { public void ProcessRequest (HttpContext context) { HttpResponse Response = context.Response; Response.ContentType = "application/pdf"; PdfReader reader = new PdfReader(context.Server.MapPath(PATH_TO_PDF)); /* * save __one__ instance of barcode image; * see MakeBarcode() method below */ iTextSharp.text.Image barcode = null; float barcodeWidth = 0; float barcodeHeight = 0; using (PdfStamper stamper = new PdfStamper(reader, Response.OutputStream)) { int n = reader.NumberOfPages; for (int i = 1; i <= n; i++) { PdfContentByte cb = stamper.GetOverContent(i); /* * re-use image bytes so they are added only __once__ */ if (barcode == null) { barcode = MakeBarcode(cb); barcodeWidth= barcode.Width; barcodeHeight= barcode.Height; } /* * calculate in case individual page sizes are different */ Rectangle rect = stamper.Reader.GetPageSize(i); float x = (rect.Width - barcodeWidth) / 2; // modify/remove 10 offset as you see fit float y = rect.Top - barcodeHeight - 10; barcode.SetAbsolutePosition(x, y); cb.AddImage(barcode); } } } public bool IsReusable { get { return false; } } // ---------------------------------------------------------------------------- public iTextSharp.text.Image MakeBarcode(PdfContentByte cb) { Barcode128 barcode128 = new Barcode128(); string text2 = "650-M5-013"; barcode128.Code = text2; barcode128.ChecksumText = true; return barcode128.CreateImageWithBarcode(cb, null, null); } }

obviamente, debe cambiar PATH_TO_PDF arriba a la ruta real del PDF. también hay otras formas de lograr el mismo objetivo. por ejemplo, usando PdfPageEventHelper .