将文件附加到PDF

时间:2013-05-22 09:00:20

标签: c# pdf-generation

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

我在MVC框架中使用C#ASP.net。我最初使用HTML视图从HTML视图创建PDF但我意识到,我还需要将文件附加到PDF。我转而使用iText,并设法使用iTextSharp for PDF - how add file attachments?处的解决方案将文件附加到PDF

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

“iText in Action”一书建议我可以使用注释或文档级附件。我发现这本书很容易理解,或者代码很容易理解。在互联网上的文章方式似乎也没有这方面的帮助,但道歉是我错过了什么。

这是我第一次在这里提出问题,所以如果我做错了,我会道歉。

2 个答案:

答案 0 :(得分:2)

我很抱歉你不喜欢我的书。

你读过第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(mbedded)功能:

  

12.6.4.4嵌入式转到操作   嵌入式操作(PDF 1.6)类似于远程操作   但允许跳转到嵌入另一个PDF文件的PDF文件   (见7.11.4,“嵌入式文件流”)。   流”)。

如果您打算询问“我想将任何文件(例如Docx,jpg,...文件)附加到我的PDF并向PDF添加操作,点击链接后会打开这样的文件,”然后你问的是PDF规范中不支持的东西。

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

答案 1 :(得分:0)

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

由于此图标通常被理解,我建议您使用该图标而不是用通用链接替换它。

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

我在ABCpdf .NET软件组件上工作,所以我的回复可能包含基于ABCpdf的概念。这就是我所知道的。 :-)“