C# 将文件附加到PDF

C# 将文件附加到PDF,c#,pdf-generation,C#,Pdf Generation,我正在努力将文件附加到运行时生成的PDF中 我正在MVC框架中使用C#ASP.net。我最初从HTML视图使用ABCpdf创建PDF,但后来我意识到,我还需要将文件附加到PDF。我切换到使用iText,并且我已经设法使用位于的解决方案将一个文件附加到PDF 我现在的问题是,我似乎无法在PDF中引用这些附件作为链接 “iText in Action”一书建议我可以使用注释或文档级附件。我觉得这本书不容易理解,代码也不容易理解。在这方面,网上的文章似乎也没有什么帮助,但很抱歉,我错过了任何东西 这是

我正在努力将文件附加到运行时生成的PDF中

我正在MVC框架中使用C#ASP.net。我最初从HTML视图使用ABCpdf创建PDF,但后来我意识到,我还需要将文件附加到PDF。我切换到使用iText,并且我已经设法使用位于的解决方案将一个文件附加到PDF

我现在的问题是,我似乎无法在PDF中引用这些附件作为链接

“iText in Action”一书建议我可以使用注释或文档级附件。我觉得这本书不容易理解,代码也不容易理解。在这方面,网上的文章似乎也没有什么帮助,但很抱歉,我错过了任何东西


这是我第一次在这里问问题,如果我做得不对,我很抱歉。

很抱歉你不喜欢我的书

你读过第16章吗?您希望将文件嵌入为文档级附件,如下所示:

PdfFileSpecification fs = PdfFileSpecification.FileEmbedded(writer, ... );
fs.AddDescription("specificname", false);
writer.AddFileAttachment(fs);
在文档内部,您希望创建一个指向的链接,以打开用关键字“specificname”描述的PDF文档。这是通过以下操作完成的:

PdfTargetDictionary target = new PdfTargetDictionary(true);
target.EmbeddedFileName = "specificname";
PdfDestination dest = new PdfDestination(PdfDestination.FIT);
dest.AddFirst(new PdfNumber(1));
PdfAction action = PdfAction.GotoEmbedded(null, target, dest, true);
您可以对注释、块等使用此操作。。。例如:

Chunk chunk = new Chunk(" (see info)");
chunk.SetAction(action);
这是一个常见的误解,认为这将工作的任何附件。但是,ISO-32000-1非常清楚GotoE(MBEDED)功能:

12.6.4.4嵌入式行动 嵌入式go-to-action(PDF 1.6)类似于远程go-to-action 但允许跳入或跳出嵌入在另一个PDF文件中的PDF文件 (见7.11.4,“嵌入式文件流”)。 溪流”)

如果您想问“我想将任何文件(如Docx、jpg等文件)附加到我的PDF中,并在单击链接时向PDF添加打开此类文件的操作”,那么您是在问PDF规范中不支持的问题


请随意阅读ISO-32000-1。如果您不理解我的书,您将不得不额外努力阅读PDF标准…

很抱歉,您不喜欢我的书

您是否阅读了第16章?您想将文件作为文档级附件嵌入,如下所示:

PdfFileSpecification fs = PdfFileSpecification.FileEmbedded(writer, ... );
fs.AddDescription("specificname", false);
writer.AddFileAttachment(fs);
在文档内部,您希望创建指向的链接,以打开使用关键字“specificname”描述的PDF文档。此操作通过以下操作完成:

PdfTargetDictionary target = new PdfTargetDictionary(true);
target.EmbeddedFileName = "specificname";
PdfDestination dest = new PdfDestination(PdfDestination.FIT);
dest.AddFirst(new PdfNumber(1));
PdfAction action = PdfAction.GotoEmbedded(null, target, dest, true);
您可以对注释、块等使用此操作。例如:

Chunk chunk = new Chunk(" (see info)");
chunk.SetAction(action);
认为这适用于任何附件是一种常见的误解。然而,ISO-32000-1非常清楚GotoE(MBEDED)功能:

12.6.4.4嵌入式行动 嵌入式go-to-action(PDF 1.6)类似于远程go-to-action 但允许跳入或跳出嵌入在另一个PDF文件中的PDF文件 (见7.11.4,“嵌入式文件流”)。 溪流”)

如果您想问“我想将任何文件(如Docx、jpg等文件)附加到我的PDF中,并在单击链接时向PDF添加打开此类文件的操作”,那么您是在问PDF规范中不支持的问题


请随意阅读ISO-32000-1。如果您不理解我的书,您将不得不额外努力阅读PDF标准…

在ABCpdf菜单项下找到的ABCpdf注释示例项目显示了如何添加文件附件。它们使用标准的“Pin”格式链接图标

因为这个图标通常被理解,我建议你使用它,而不是用一个普通的链接来代替它

但是,如果您需要使用更通用的链接,请通过电子邮件与我们联系,我认为我们有一些示例代码可供您使用


我从事ABCpdf.NET软件组件的工作,因此我的回复可能以ABCpdf为基础。这正是我所知道的。:-)“

在ABCpdf菜单项下找到的ABCpdf注释示例项目显示了如何添加文件附件。这些附件使用标准的“Pin”格式链接图标

因为这个图标通常被理解,我建议你使用它,而不是用一个普通的链接来代替它

但是,如果您需要使用更通用的链接,请通过电子邮件与我们联系,我认为我们有一些示例代码可供您使用


我在使用ABCpdf.NET软件组件,因此我的回复可能包含基于ABCpdf的概念。这正是我所知道的。:-“

可能重复的可能重复的抱歉-我不是想暗示我不喜欢你的书。我当然喜欢你的书,觉得它非常有用。关于文件嵌入的部分我确实觉得很复杂,很难理解,非常感谢您花时间在这里解释得这么好。我怀疑我有点匆忙地处理这一切。你完全正确,我指的是任何文件,我没有意识到这一点。再次感谢,没问题。我刚刚开始写第三版,或者更确切地说:4卷新文档将在Leanpub上免费提供:写作是一项非常艰苦的工作,因此欢迎所有有助于改进本书的反馈。对不起,我不是有意暗示我不喜欢你的书。我当然喜欢你的书,觉得它非常有用。关于文件嵌入的部分我确实觉得很复杂,很难理解,非常感谢您花时间在这里解释得这么好。我怀疑我有点匆忙地处理这一切。你完全正确,我指的是任何文件,我没有意识到这一点。再次感谢,没问题。我刚刚开始编写第三版,或者更确切地说:4卷新文档将在Leanpub上免费提供:写作是一项非常艰苦的工作,因此欢迎所有有助于改进本书的反馈。非常感谢-尽管我多次查看了您的支持文档,但我没有看到这一点。这是因为我在搜索嵌入和附件,而不是注释——现在我觉得自己是个白痴。那太有用了,谢谢。(对不起,我不能加一个,因为我还没有拿到一个