.NET C# 使用 iText 生成PDF
.NET C# 使用 iText 生成PDF
文章目录
- .NET C# 使用 iText 生成PDF
- 1 安装 iText 7 库:
- 2 变量定义
- 3 创建一个PDF
- 4 段落
- 5 旋转文本
- 6 代码块
- 7 外部链接
- 8 内部链接
- 9 表格
- 10 注释
- 11 线条
- 12 二维码
- 13 嵌入图像
- 14 列表
- 15 设置背景
- 16 页眉
- 17 页脚
- 18 事件
- 19 水印
- 20 分栏
- 21 源码
本文章代码PDF生成样例:example.pdf
(图片来源网络,侵删)1 安装 iText 7 库:
Install-Package itext7
Install-Package itext7.bouncy-castle-adapter
环境:itext7 8.0.4 | itext7.bouncy-castle-adapter 8.0.4
2 变量定义
// 定义PDF文件路径 const string pdfPath = "example.pdf"; // 定义字体文件路径 const string sunFontPath = @"C:\Windows\Fonts\simsun.ttc,0"; const string heiFontPath = @"C:\Windows\Fonts\simhei.ttf"; // 定义图片路径 const string imagePath = @"res\image.png"; const string cover1Path = @"res\c1.png"; const string cover2Path = @"res\c2.png"; const string cover3Path = @"res\c3.png"; // 定义PDF背景路径 const string backgroundPath = @"res\background.jpg"; // 创建字体 static PdfFont heiFont = PdfFontFactory.CreateFont(heiFontPath, PdfEncodings.IDENTITY_H); static PdfFont sunFont = PdfFontFactory.CreateFont(sunFontPath, PdfEncodings.IDENTITY_H);
3 创建一个PDF
// 创建一个PDF writer PdfWriter writer = new PdfWriter(pdfPath); // 创建一个PDF document PdfDocument pdf = new PdfDocument(writer); // 创建一个Document Document document = new Document(pdf, PageSize.A4);
4 段落
Paragraph paragraph = new Paragraph("这是一个段落。") .SetFont(heiFont) .SetFontSize(12) .SetTextAlignment(TextAlignment.LEFT); document.Add(paragraph);
5 旋转文本
Paragraph rotatedText = new Paragraph("旋转的文本") .SetRotationAngle(Math.PI / 4) .SetFont(heiFont) .SetFontSize(12); document.Add(rotatedText);
6 代码块
Paragraph codeBlock = new Paragraph() .Add(new Text("public static void main(String[] args)\n{\n")) .Add(new Tab()) .Add(new Text("System.out.println(\"Hello, World!\");")) .Add(new Text("\n}")) .SetFont(PdfFontFactory.CreateFont(StandardFonts.COURIER)) .SetFontSize(12) .SetBackgroundColor(new DeviceRgb(0xEE, 0xF0, 0xF4)) .SetPadding(10) .SetBorderRadius(new BorderRadius(5)); document.Add(codeBlock);
7 外部链接
Text externalLink = new Link("访问网站", PdfAction.CreateURI("https://www.example.com")).SetFontColor(ColorConstants.BLUE).SetUnderline(); Paragraph linkParagraph = new Paragraph("这是一个带有外部链接的段落: ").SetFont(heiFont).Add(externalLink); document.Add(linkParagraph);
8 内部链接
Paragraph paragraph = new Paragraph("内部链接") .SetTextAlignment(TextAlignment.LEFT) .SetFontSize(22) .SetBold() .SetFont(heiFont) .SetMarginBottom(20) .SetDestination("externalLink"); document.Add(paragraph); // 添加标签 PdfOutline rootOutline = document.GetPdfDocument().GetOutlines(false); PdfOutline firstSection = rootOutline.AddOutline(title); firstSection.AddDestination(PdfDestination.MakeDestination(new PdfString(destination))); PdfAction action = PdfAction.CreateGoTo("externalLink"); Text internalLink = new Link("跳转到 -> 外部连接", action).SetFontColor(ColorConstants.BLUE).SetUnderline(); Paragraph internalLinkParagraph = new Paragraph("这是一个带有内部链接的段落: ").SetFont(heiFont).Add(internalLink); document.Add(internalLinkParagraph);
9 表格
// 创建表格(3 列) Table table = new Table(UnitValue.CreatePercentArray(new float[] { 1, 1, 1 })) .UseAllAvailableWidth(); // 添加表头 table.AddHeaderCell(new Cell().Add(new Paragraph("表头 1").SetFont(heiFont))); table.AddHeaderCell(new Cell().Add(new Paragraph("表头 2").SetFont(heiFont))); table.AddHeaderCell(new Cell().Add(new Paragraph("表头 3").SetFont(heiFont))); // 添加五行数据 for (int i = 1; i table.AddCell(new Cell().Add(new Paragraph("单元格 " + i + ", 1").SetFont(heiFont))); table.AddCell(new Cell().Add(new Paragraph("单元格 " + i + ", 2").SetFont(heiFont))); table.AddCell(new Cell().Add(new Paragraph("单元格 " + i + ", 3").SetFont(heiFont))); } document.Add(table); ListItem listItem = new ListItem($"条目 {i}"); Paragraph paragraph = new Paragraph($"这里是条目 {i} 的内容。\n这里是条目 {i} 的内容。") .SetFont(heiFont) .SetFontSize(12) .SetBackgroundColor(new DeviceRgb(0xEE, 0xF0, 0xF4)) .SetPadding(10) .SetBorderRadius(new BorderRadius(5)); listItem.Add(paragraph); list.Add(listItem); } document.Add(list); public void HandleEvent(Event @event) { PdfDocumentEvent docEvent = (PdfDocumentEvent)@event; PdfDocument pdfDoc = docEvent.GetDocument(); PdfPage page = docEvent.GetPage(); Rectangle pageSize = page.GetPageSize(); // 添加页脚文本 Canvas canvas = new Canvas(page, pageSize); int pageNumber = pdfDoc.GetPageNumber(page); Paragraph footer = new Paragraph($"第 {pageNumber} 页") .SetFont(heiFont) .SetFontSize(10) .SetTextAlignment(TextAlignment.RIGHT); canvas.ShowTextAligned(footer, pageSize.GetWidth() - 20, pageSize.GetBottom() + 20, TextAlignment.RIGHT); canvas.Close(); } } for (float y = yStep / 2; y
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。