110,534
社区成员
发帖
与我相关
我的任务
分享
private void button1_Click(object sender, EventArgs e)
{
string s="";
PdfReader pdfr = new PdfReader("d:\\sj.pdf");
IList<Dictionary<string, object>> list = SimpleBookmark.GetBookmark(pdfr, pdfr.Catalog,true);
foreach (Dictionary<string, object> i in list)
{
string title = (string)i["Title"];
string[] pagenum = ((string)i["Page"]).Split(' ');
s += title.Substring(0, title.Length - 1) + " " + pagenum[0] + "\n";
}
richTextBox1.Text = s;
}
比如这种
bookmark1
bookmark2
bookmark3
bookmark4
bookmark5
bookmark6
如果复杂一点,比如这种,就不行,不知道到有没有解决办法??
bookmark1
bookmark2
bookmark3
bookmark4
bookmark5
bookmark6
using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using iTextSharp.text;
using iTextSharp.text.pdf;
public class Form1
{
private void Button1_Click(System.Object sender, System.EventArgs e)
{
PdfReader objReader = default(PdfReader);
Label1.Text = "";
objReader = new PdfReader("D:\\梅英精選集.pdf");
//讀取書籤
Label1.Text += "書籤:" + ShowBookMark(SimpleBookmark.GetBookmark(objReader), 0) + Constants.vbNewLine;
objReader.Close();
}
public string ShowBookMark(IList<Dictionary<string, object>> objBookMark, int intLevel)
{
Dictionary<string, object> objItem;
string strBookMark ;
string strSpace ;
strBookMark = "";
strSpace = " "; //空白字串用來取得內縮字元
foreach (Dictionary<string, object> objItem_loopVariable in objBookMark) {
objItem = objItem_loopVariable;
strBookMark += strSpace.Substring(0, intLevel) + objItem["Title"] + objItem["Page"].split(" ")(0) + Constants.vbNewLine;
if (objItem.ContainsKey("Kids")) strBookMark += ShowBookMark(objItem["Kids"], intLevel + 1); //如果有子項目則遞迴呼叫ShowBookMark顯示書籤
}
return strBookMark;
}
}