繁体   English   中英

使用chrome pdf查看器可以查看的PDFTron的PDFNet SDK向PDF添加批注

[英]Add annotations to PDF with PDFTron's PDFNet SDK that chrome pdf viewer can view

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

如果我打开一个已被FDFMerge()d却不能在chrome浏览器中工作的PDF,则可以在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();
        }
    }
}

这将确保每个注释都具有外观流,但避免覆盖现有注释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM