Asp.Net/C#使用iTextSharp生成PDF书签
本例要实现的功能:
使用的iTextSharp版本为 4.1.6.0 实现的代码如下: Document doc = new Document(PageSize.A4); try { #region 载入亚洲字体资源,无此操作的话,不能显示包括中文、日文、 韩文等内容 BaseFont.AddToResourceSearch("iTextAsian.dll"); BaseFont.AddToResourceSearch("iTextAsianCmaps.dll"); BaseFont bf = BaseFont.CreateFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); Font font = new Font(bf, 14); #endregion PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream("bookmarks.pdf", FileMode.Create)); doc.Open(); ////PDF文件每页显示的文字内容 string[] pdfTextContents = { "Adobe 公司旗下的 PDF 文件格式, 是一款普遍流行的格式 ... ...", "下面这张图片,是三角猫的个人博客 http://oapdf.com/ 的截图", "一只可爱的小猫咪,哈哈", "小白兔,白又白,两只耳朵竖起来, 爱吃鱼翅和燕窝...囧", "来张卡通吧,意思意思" }; ////PDF文件每页显示的图片路径 string[] pdfImagePaths = { "pdf.png", "zu14.png", "cat.jpg", "rabbit.jpg", "cartoon.jpg" }; ////PDF每页对应的书签 string[] pdfBookmarks = { "PDF文件格式", "三角猫博客", "猫咪图", "小白兔", "卡通动物图" }; ////下面开始为PDF文件,添加页面内容 for (int i = 0; i < 5; i++) { doc.Add(new Paragraph(pdfTextContents[i], font)); doc.Add(Image.GetInstance(Path.Combine( AppDomain.CurrentDomain.BaseDirectory, pdfImagePaths[i]))); doc.NewPage(); } ////下面为PDF各页面,添加对应的书签 PdfContentByte cb = writer.DirectContent; //书签树的根 PdfOutline root = cb.RootOutline; for (int i = 0; i < 5; i++) { PdfAction action = PdfAction.GotoLocalPage(i + 1, new PdfDestination(PdfDestination.FIT), writer); PdfOutline outLine = new PdfOutline(root, action, pdfBookmarks[i]); } //保存并关闭PDF文件 doc.Close(); writer = null; Process.Start("bookmarks.pdf"); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadKey(); } |