用ITextSharp.dl如何读取复杂的bookmarks

hqwjohn 2014-12-12 01:24:49
        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;
}

ITextSharp.dll当中的SimpleBookmark只能读取简单的bookmarks

        
比如这种
bookmark1
bookmark2
bookmark3
bookmark4
bookmark5
bookmark6
如果复杂一点,比如这种,就不行,不知道到有没有解决办法??
bookmark1
bookmark2
bookmark3
bookmark4
bookmark5
bookmark6

...全文
650 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
may857091 2015-03-17
  • 打赏
  • 举报
回复

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;
	}
}
csdn_aspnet 2014-12-12
  • 打赏
  • 举报
回复
c#使用itextsharp读取pdf文件的文本内容 public string ReadPdfFile(string fileName) { StringBuilder text = new StringBuilder(); if (File.Exists(fileName)) { PdfReader pdfReader = new PdfReader(fileName); for (int page = 1; page <= pdfReader.NumberOfPages; page++) { ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy); currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText))); text.Append(currentText); } pdfReader.Close(); } return text.ToString(); }
hqwjohn 2014-12-12
  • 打赏
  • 举报
回复
感谢你的回复,但是你的回答似乎没有针对我提的问题

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧