gpt4 book ai didi

c# - 使用 C# 代码使用 iTextSharp 将页面书签添加到现有 PDF

转载 作者:太空宇宙 更新时间:2023-11-03 13:30:35 27 4
gpt4 key购买 nike

我的要求与这个问题中描述的相同:Bookmark to specific page using iTextSharp 4.1.6

我尝试了答案,但最后一行给出了以下错误:

Can not implicitly convert ArrayList to IList<Dictionar(strin,object)>

我不确定如何更正它。

报错的那一行,在上面链接的答案1中

wri.Outlines = bookmarks

我修改了这个例子:

List<Dictionary<string, object>> testData = new List<Dictionary<string, object>>(100);
// Just Sample data for understanding.
//for (int i = 0; i < 100; i++)
//{
var test = new Dictionary<string, object>
{
{ "Action", "GoTo"},
{ "Title", "Page1 0 H 0" },
{"Page", "1 XYZ 0 " + h + " 0" }
};
testData.Add(test);
//}
wri.Outlines = testData;

现在添加书签后,我无法打开 PDF,因为文件已损坏。

最佳答案

请咨询official documentation .

书签在 Chapter 7 中讨论你会在哪里找到 BookmarkedTimeTable例子。当您使用 iTextSharp (C#) 而不是 iText (Java) 时,您需要在 the list of examples ported to C# 中查找相应的示例。 ,更具体地说 BookmarkedTimeTable.cs .

更新问题后更新:

您的错误表明 testdata不是真正的 IList<Dictionar(string,object)> 类型;请注意,我已将 g 添加到 strin 并假设这是您问题中的错字,而不是您的实际代码中的错字。

请从我书中的示例开始,然后逐渐更改该示例,直到您破解该代码。

根据额外评论更新:

当对 PDF 进行数字签名时,允许(或不允许)的操作数量有限。参见 Which operations are allowed on a digitally signed PDF?添加书签是不允许的操作,因此您必须在应用更改之前删除所有签名字段。根据您是要保留空签名字段还是完全删除该字段,您将使用方法 clearSignatureField()removeField()将签名字段的名称作为参数传递。你可以获得 ArrayList使用 getSignatureNames() 的名称方法(参见 ÀcroFields )。

关于c# - 使用 C# 代码使用 iTextSharp 将页面书签添加到现有 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20702728/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com