这是否可以打开具有特定存在书签的PDF文件,以编程方式在C#上打开(如果有办法,我可以使用ItextSharp吗?)
我关注了this问题,这对目的地而言并非适用于书签。
另一个可能对我有用的选择是使用Word 2007配置目标,因此在使用Acrobat Reader转换为PDF后,目标及其名称将保存。
感谢您的帮助!
编辑1
这是我的代码:(点击按钮1将所有书签写入组合框)
private void button1_Click(object sender, EventArgs e)
{
reader = new PdfReader("C:\\Users\\itay\\Desktop\\V-Sperm Gold 3.49 User Guide_04_APR_11.pdf");
book_mark = SimpleBookmark.GetBookmark(reader);
foreach (Dictionary<string, object> bk in book_mark)
{
foreach (KeyValuePair<string, object> kvr in bk)
{
if (kvr.Key == "Kids" || kvr.Key == "kids")
{
IList<Dictionary<string, object>> child =
(IList<Dictionary<string, object>>)kvr.Value;
recursive_search(child, tn);
}
else if (kvr.Key == "Title" || kvr.Key == "title")
{
tn = new System.Windows.Forms.TreeNode(kvr.Value.ToString());
//comboBox1.Items.Add(tn.Text);
}
else if (kvr.Key == "Page" || kvr.Key == "page")
{
//saves page number
tn.ToolTipText = Regex.Match(kvr.Value.ToString(), "[0-9]+").Value;
}
}
}
}
public void recursive_search(IList<Dictionary<string, object>> ilist, TreeNode tnt)
{
foreach (Dictionary<string, object> bk in ilist)
{
foreach (KeyValuePair<string, object> kvr in bk)
{
if (kvr.Key == "Kids" || kvr.Key == "kids")
{
IList<Dictionary<string, object>> child =
(IList<Dictionary<string, object>>)kvr.Value;
recursive_search(child, tn);
}
else if (kvr.Key == "Title" || kvr.Key == "title")
{
tn = new System.Windows.Forms.TreeNode(kvr.Value.ToString());
comboBox1.Items.Add(tn.Text);
}
else if (kvr.Key == "Page" || kvr.Key == "page")
{
tn.ToolTipText = Regex.Match(kvr.Value.ToString(), "[0-9]+").Value;
tnt.Nodes.Add(tn);
}
}
}
}
点击按钮2打开PDF:
private void button2_Click(object sender, EventArgs e)
{
Process myProcess = new Process();
myProcess.StartInfo.FileName = "AcroRd32.exe";
myProcess.StartInfo.Arguments = "pagemode=bookmarks&nameddest=" + comboBox1.Text + "\" \"" + "C:\\Users\\itay\\Desktop\\V-Sperm Gold 3.49 User Guide_04_APR_11.pdf" + "\"";
myProcess.Start();
}
答案 0 :(得分:1)
您似乎正在寻找特定的打开参数但您找不到它,因为您正在寻找不存在的东西。
请参阅Adobe网站上提供的官方文档:http://partners.adobe.com/public/developer/en/acrobat/PDFOpenParameters.pdf
无法定义可触发的书签。你会发现诸如nameddest
(你已经知道)和page
这样的开放参数可以跳转到PDF中的特定位置,但是如果要跳转到特定书签,则需要检查书签(例如使用SimpleBookmark
类。如果您看到书签指向某个页面,则需要使用page
参数,并且可以将其与zoom
,{ {1}}或view
参数,具体取决于为该页面定义的目标。