C# 如何从PDFTron保存pdf批注的内存流?

C# 如何从PDFTron保存pdf批注的内存流?,c#,pdf,annotations,appearance,pdftron,C#,Pdf,Annotations,Appearance,Pdftron,我读过一些关于pdf格式的文章,我想从pdf文档中读取注释,并将其外观和数据保存到数据库中 因此,我发现,注释完全由其“流”表示,我希望是一个二进制数组,每个pdf查看器都会将其转换为正确的外观。 但是我如何用像PDFTron这样的SDK提取这些信息呢 或者我应该为每个注释设计一个正确的模型,以手动提取注释中最重要的值 问候并感谢您的回答 好问题 注释完全由其“流”表示 外观流是的,但是注释有很多元数据,例如创建和上次修改的日期、作者、位置+大小、定义外观的标志和属性 幸运的是,PDF ISO格

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

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

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

问候并感谢您的回答

好问题

注释完全由其“流”表示 外观流是的,但是注释有很多元数据,例如创建和上次修改的日期、作者、位置+大小、定义外观的标志和属性

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

FDF数据将包含所有注释信息,包括外观流

使用PDFNet,您可以使用以下方法导出注释

注意,目前您必须先写入磁盘,但为了方便起见,可以添加直接返回字节[]的fdoc.Save()api

然后使用以下代码导入

FDFDoc fdfdoc = new FDFDoc(data, data.Length);
pdfdoc.FDFMerge(fdfdoc);
有关FDF用法的更多示例,请参见此示例。


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

“我希望使用二进制数组”-它更复杂。pdf流不仅包括blob,还包括一个字典,其中的值可以再次成为复杂对象,尤其是pdf流,也可能具有复杂的字典值等。下面的解决方案是否适用于您?嘿。谢谢你的回答!我会在几个小时内尝试一下,然后告诉你我的结果!它工作得很好!从一个列表中提取每个注释有点复杂,但这不是它的工作方式,而是它的工作原理!非常感谢你@那么你介意把这个作为答案吗?谢谢
FDFDoc fdfdoc = new FDFDoc(data, data.Length);
pdfdoc.FDFMerge(fdfdoc);