如何从 PDFTron 保存 pdf 注释的内存流?

How can I save the memory stream of a pdf annotation from PDFTron?

我看过一些关于pdf格式的文章,我想从pdf文档中读取注释并将其外观和数据保存到数据库中。

因此我发现,注释完全由其 "stream" 表示,我希望是一个二进制数组,每个 pdf 查看器都会将其转换为正确的外观。 但是如何使用 PDFTron 等 SDK 提取这些信息?

或者我应该为每个注释设计一个正确的模型来手动提取注释中最重要的值吗?

问候并感谢您的回答!

好问题。

that a annotation is fully represented by its "stream" The appearance stream yes, but annotations have a lot of metadata, such as created and last modified dates, author, location+size, flags and properties defining the appearance.

幸运的是,PDF ISO 格式描述了一种在 PDF 格式之外交换注释的方法。这是通过 FDF 格式完成的,它只是一个只有注释信息(或表单字段)的 PDF。

FDF数据将包含包括外观流在内的所有注释信息。

使用 PDFNet,您可以使用 FDFExtract 以这种方式导出注释。

ArrayList annotations = new ArrayList();
annotations.Add(annot);
FDFDoc fdfdoc = pdfdoc.FDFExtract(annotations);
fdfdoc.Save(tempFileLocation);
byte[] data = System.IO.File.ReadAllBytes(tempFileLocation);

注意,目前需要先写入磁盘,但是为了方便可以直接加一个FDFDoc.Save() api那个returns一个byte[]

然后您只需使用以下代码导入即可。

FDFDoc fdfdoc = new FDFDoc(data, data.Length);
pdfdoc.FDFMerge(fdfdoc);

有关 FDF 用法的更多示例,请参阅此示例。 https://www.pdftron.com/documentation/samples/cs/FDFTest

使用 FDF 存储注释的好处是您没有供应商锁定,格式是完全定义的。