zoukankan      html  css  js  c++  java
  • iTextSharp 生成PDF 实例

     1   static void Main(string[] args)
     2         {  
     3             //CreatePDF
     4             string name=Guid.NewGuid().ToString("N");
     5             Document document = new Document(PageSize.A5);
     6             PdfWriter writerA = PdfWriter.GetInstance(document, 
     7                       new FileStream(name+".pdf", FileMode.OpenOrCreate));
    writerA.InitialLeading = 30;// 行间距设置
    8 WriteDocument(document, writerA); 9 //UpdatePDF 10 UpdatePDF(name+".pdf", 1, "Upated: Add Text", 300,10); 11 }
     1  static void WriteDocument(Document document, PdfWriter writer)
     2         {
     3             if (!document.IsOpen())
     4                 document.Open();
     5 
     6             AddListWithLink(document, writer);
     7             FillBlock(document, writer);
     8             AddCustomizeList(document, writer);
     9             AddPTable(document, writer);
    10             AddTable(document, writer);
    11             AddExtContent(document, writer);
    12             document.NewPage();
    13             AddExtContent(document, writer);
    14 
    15             document.Close();
    16         }
    17         public static string UpdatePDF(string filePath,int pageIndex,string content,float px,float py)
    18         {
    19             string name=Guid.NewGuid().ToString("N");
    20             PdfReader reader=new PdfReader(filePath);
    21             PdfStamper stamp=new PdfStamper(reader, new FileStream(name+".pdf", FileMode.Create));
    22            
    23             PdfContentByte cbc =stamp.GetOverContent(pageIndex);
    24             BaseFont bfontc = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, 
    25                 BaseFont.NOT_EMBEDDED);//设定字体:黑体 
    26             cbc.BeginText();
    27                 cbc.SetFontAndSize(bfontc, 9);//设定字号 
    28                 cbc.SetCharacterSpacing(1);//设定字间距 
    29                 cbc.SetRGBColorFill(66, 00, 00);//设定文本颜色
    30                 cbc.ShowTextAligned(PdfContentByte.ALIGN_LEFT,content,px,py, 0);
    31             cbc.EndText();
    32             stamp.Close();
    33             reader.Close();
    34             File.Delete(filePath);
    35             return name+".pdf";
    36         }
    AddListWithLink
     1      //添加 链接 、列表    
     2        private static void AddListWithLink(Document document,PdfWriter writer)
     3         {
     4             Phrase ph=new Phrase();
     5             Paragraph p = new Paragraph();
     6             p.Add("This Is A Link Example:");
     7             Anchor anchor = new Anchor(10, "BaiDu", FontFactory.GetFont(
     8                 FontFactory.HELVETICA, 10, Font.UNDERLINE, new Color(0, 0, 255)));
     9             anchor.Reference = "www.baidu.com";
    10             anchor.Name = "baidu";
    11             p.Add(anchor);
    12             ph.Add(p);
    13 
    14             List listitems = new List(false, 10);
    15             listitems.ListSymbol = new Chunk("\u2022", FontFactory.GetFont(FontFactory.HELVETICA, 20));
    16             listitems.Add(new ListItem(ph));
    17             listitems.Add(new ListItem("The second line"));   
    18            document.Add(listitems);
    19         }
    FillBlock
     1   // 写在矩形区域里面:用于布局
     2        private static void FillBlock(Document document, PdfWriter writer)
     3         {            
     4             PdfContentByte cbb = writer.DirectContent;
     5             ColumnText ct = new ColumnText(cbb);
     6             Phrase fieldtext = new Phrase("Fill Block[10,35]~[250,150]:\n",
     7                     FontFactory.GetFont(FontFactory.HELVETICA, 10, Font.BOLD, new Color(0, 0, 255)));
     8             fieldtext.AddSpecial(new Paragraph("The  line is longer to see what happens,The  line is longer" 
     9                                    +"to see what happens,The  line is longer to see what happens,The  line "
    10                                    +"is longer to see what happens,The  line is longer to see what happens,"
    11                                    +"The  line is longer to see what happens."));
    12             ct.SetSimpleColumn(fieldtext, 10, 35, 250, 150, 15, Element.ALIGN_LEFT);//[10,35]~[250,150]
    13             //区域:左下角为[10,35],右上角为[250,150]
    14             ct.Go();
    15             
    16         }
    AddCustomizeList
     1   //定位输出 定制的列表文本
     2        private static void AddCustomizeList(Document document,PdfWriter writer)
     3        {
     4           
     5            PdfContentByte cb = writer.DirectContent;
     6            cb.BeginText();
     7            BaseFont bfont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, 
     8                   BaseFont.NOT_EMBEDDED);//设定字体:黑体 
     9 
    10            cb.SetFontAndSize(bfont, 9);//设定字号 
    11 
    12            cb.SetCharacterSpacing(1);//设定字间距 
    13            cb.SetRGBColorFill(66, 00, 00);//设定文本颜色 
    14            cb.MoveTo(100, 70);
    15            string[] lines=new string[] { 
    16                 "A Customize List is longer to \n see what happens" 
    17                   +"once the end of the\nline is reached. Will it start on a new line?",
    18                 "B Customize List is longer to \n see what happens"
    19                   +" once the end of the\n line is reached. Will it start on a new line?", 
    20                 "C Customize List is longer to \n see what happens"
    21                    +"once the end of the\n line is reached. Will it start on a new line?" };
    22            int pointY=300;
    23            foreach (var line in lines)
    24            {
    25                var items=line.Split('\n');
    26                bool IsTop=true;
    27                pointY-=6;
    28 
    29                foreach (var item in items)
    30                {
    31                    pointY-=9;
    32                    if (IsTop)
    33                    {
    34                        cb.SetFontAndSize(bfont, 18);
    35                        cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "\u2022", 100, pointY-3, 0);
    36                        cb.SetFontAndSize(bfont, 9);
    37                        cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, item.Trim(), 110, pointY, 0);
    38                        IsTop=false;
    39                    }
    40                    else
    41                    {
    42                        cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, item.Trim(), 110, pointY, 0);
    43                    }
    44 
    45                }
    46            }
    47 
    48            cb.EndText();
    49           // writer.Add(p);
    50            writer.Flush();
    51 
    52          
    53        }
    Pdf Table
     1    private static void AddPTable(Document document, PdfWriter writer)
     2        {
     3           
     4            PdfPTable pdftable = new PdfPTable(3);
     5 
     6            Phrase text1 = new Phrase("Add PTable", FontFactory.GetFont(FontFactory.HELVETICA, 10, 
     7                              Font.BOLD, new Color(0, 0, 255)));
     8            PdfPCell cell = new PdfPCell(text1);
     9            cell.VerticalAlignment =Element.ALIGN_CENTER;
    10            cell.HorizontalAlignment =Element.ALIGN_MIDDLE;
    11            cell.Padding = 0.5F;
    12 
    13            cell.BorderWidthTop=2;
    14            cell.BorderColorLeft=Color.RED;
    15            //cell.FixedHeight = height;
    16            cell.MinimumHeight =50;
    17 
    18            pdftable.AddCell(cell);
    19 
    20            pdftable.AddCell("Content");
    21 
    22            //GetInstance 的 img 参数是 System.Drawing 中的 Image。
    23            //如果你不希望单元格被撑大,就要设置其 FixedHeigh。
    24            //如果还想看整个图片,就需要调用 ScaleToFit 方法。
    25            PdfPCell cell3=new PdfPCell();
    26            iTextSharp.text.Image img1 = iTextSharp.text.Image.GetInstance("flower.jpg");
    27 
    28            img1.ScaleToFit(cell.Width, cell.Height);
    29 
    30            cell3.FixedHeight = cell.MinimumHeight;
    31            cell3.Image = img1;
    32            pdftable.AddCell(cell3);
    33            document.Add(pdftable);
    34               
    35        }
    36        private static void AddTable(Document document, PdfWriter writer)
    37        {
    38           
    39            Table table = new Table(3);
    40            var cell4 = new Cell("Add Table:");
    41            cell4.Rowspan = 2;
    42            cell4.Colspan = 2;
    43            cell4.BackgroundColor = new Color(0xC0, 0xC0, 0xC0);
    44            cell4.BorderColor = new Color(255, 0, 0);
    45 
    46            table.AddCell(cell4);
    47 
    48            table.AddCell("1.3");
    49 
    50            table.AddCell("2.3");
    51 
    52            table.AddCell("3.1");
    53 
    54            table.AddCell("3.2");
    55            table.AddCell("3.3");
    56            document.Add(table);
    57        
    58        }
    AddExtContent
     1  private static void AddExtContent(Document document,PdfWriter writer)
     2        {
     3            PdfContentByte cbc = writer.DirectContent;
     4            BaseFont bfontc = BaseFont.CreateFont(BaseFont.HELVETICA, 
     5                       BaseFont.CP1252, BaseFont.NOT_EMBEDDED);//设定字体:黑体 
     6            cbc.BeginText();
     7            cbc.SetFontAndSize(bfontc, 9);//设定字号 
     8            cbc.SetCharacterSpacing(1);//设定字间距 
     9            cbc.SetRGBColorFill(66, 00, 00);//设定文本颜色 
    10            
    11            cbc.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "Position[10,10]: Pdf123", 10,10, 0);
    12            cbc.EndText();
    13        }

    行间距:

    writer.InitialLeading = 30;

    phrase.Leading = 50;

    段落缩进:

    paragraph.IndentationLeft = 20;
    paragraph.IndentationRight = 20;
    paragraph.FirstLineIndent = 20;
     
    段间距:
    paragraph.SpacingBefore=10;
    paragraph.SpacingAfter=20;
     
    嵌入字体:
    BaseFont simheiBase = BaseFont.CreateFont(@"C:\Windows\Fonts\Din-balck.otf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
     
  • 相关阅读:
    汇编语言 标志位介绍
    PHP中的二进制位运算和权限存储
    iframe 父窗口和子窗口相互的调用方法集锦
    document.compatMode
    $.browser.msie
    seo外链的真正做法
    APP常用控件学习理解
    家庭记账本APP开发准备(一)
    Android常用布局和控件
    安卓APP开发的初步了解
  • 原文地址:https://www.cnblogs.com/AspDotNetMVC/p/2766414.html
Copyright © 2011-2022 走看看