Google chrome 使用PDFTron'向PDF添加注释;chrome pdf viewer可以查看的PDFNet SDK

Google chrome 使用PDFTron'向PDF添加注释;chrome pdf viewer可以查看的PDFNet SDK,google-chrome,annotations,pdftron,pdfnet,Google Chrome,Annotations,Pdftron,Pdfnet,当我将FDFMerge()注释转换为PDF并保存时,在google chrome的PDF查看器中打开PDF时,注释不可见。直接从acrobat打开同一文件时,或在PDFTron的WebViewer中打开时,注释可见 如果我打开一个PDF文件,它是FDFMerge()d,但不在chrome viewer中工作,我可以在acrobat中打开并保存该文件,这时问题就消失了 在FDFMerge()之后,我是否需要做些什么来让这些注释的行为与acrobat解决方案完全相同?是否有某个层未完全创建?PDF中

当我将FDFMerge()注释转换为PDF并保存时,在google chrome的PDF查看器中打开PDF时,注释不可见。直接从acrobat打开同一文件时,或在PDFTron的WebViewer中打开时,注释可见

如果我打开一个PDF文件,它是FDFMerge()d,但不在chrome viewer中工作,我可以在acrobat中打开并保存该文件,这时问题就消失了


在FDFMerge()之后,我是否需要做些什么来让这些注释的行为与acrobat解决方案完全相同?是否有某个层未完全创建?

PDF中的注释可以具有所谓的外观流,这是对其外观的明确描述。如果缺少,则在查看时,大多数PDF阅读器将根据注释的属性生成新的外观流

然而,Chrome不会生成这些外观流,它只读取现有的外观流。如果它们丢失,则注释将根本不显示

另一方面,Safari会忽略外观流,并始终基于注释属性生成自己的外观流

Acrobat检测到没有外观流,并将其添加,这就是为什么在使用Acrobat保存后,注释会显示在Chrome中

要回答实际问题,请在FDFMerge之后添加以下代码

PageIterator itr = doc.GetPageIterator();
for (; itr.HasNext(); itr.Next())
{
    System.Console.WriteLine("Page {0:d}: ", itr.GetPageNumber());

    Page page = itr.Current();
    int num_annots = page.GetNumAnnots();
    for (int i=0; i<num_annots; ++i)
    {
        Annot annot = page.GetAnnot(i);
        if (annot.IsValid() == false) continue;
        if (annot.GetAppearance() == null)
        {
           // generate missing appearance
           annot.RefreshAppearance();
        }
    }
}
PageIterator itr=doc.GetPageIterator();
对于(;itr.HasNext();itr.Next())
{
System.Console.WriteLine(“Page{0:d}:”,itr.GetPageNumber();
Page Page=itr.Current();
int num_annots=page.GetNumAnnots();
对于(int i=0;i