1

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

我在 MVC 框架中使用 C# ASP.net。我最初使用 HTML 视图中的 ABCpdf 创建了 PDF,但后来我意识到,我还需要将文件附加到 PDF。我切换到使用 iText,并设法使用iTextSharp for PDF 的解决方案将文件附加到 PDF - 如何添加文件附件?

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

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

这是我第一次在这里提出问题,如果我做错了,我深表歉意。

4

2 回答 2

1

很抱歉你不喜欢我的书。

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

PdfFileSpecification fs = PdfFileSpecification.FileEmbedded(writer, ... );
fs.AddDescription("specificname", false);
writer.AddFileAttachment(fs);

在文档中,您要创建一个链接,以打开使用关键字“特定名称”描述的 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 嵌入式 Go-To 动作 嵌入式 go-to 动作 (PDF 1.6) 类似于远程 go-to 动作,但允许跳转到或从嵌入在另一个 PDF 文件中的 PDF 文件(参见 7.11.4,“嵌入式文件流“)。流”)。

如果您想问“我想将任何文件(例如 Docx、jpg、... 文件)附加到我的 PDF 中,并在 PDF 中添加一个在单击链接时打开此类文件的操作”,那么您就是询问 PDF 规范中不支持的内容。

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

于 2013-05-22T09:21:25.603 回答
0

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

因为这个图标很容易理解,所以我建议您使用那个图标,而不是用通用链接替换它。

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

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

于 2013-05-23T10:42:43.237 回答