在pdftron中保存注释的颜色(pdfnet winforms)

时间:2016-07-07 08:13:33

标签: c# colors pdftron pdfnet

我正在尝试在pdf文档后重复使用高亮注释的颜色,并且已经保存了它的高光。

我添加注释并以这种方式指定颜色:

if (isCustomColor)
         {
             ColorPt color = markingColors[m_editColor];
             hightlightAnnot.SetColor(color,3);
             hightlightAnnot.RefreshAppearance();
         }

         pdftron.PDF.Page page = doc.GetPage(selectionPageNum);

         TextExtractor txtExtractor = new TextExtractor();
         txtExtractor.Begin(page, hightlightAnnot.GetRect());
         hightlightAnnot.SetContents(txtExtractor.GetAsText());

         doc.Lock();
         page.AnnotPushBack(hightlightAnnot);
         doc.Unlock();

markingscolors是一个带有颜色的字典,我在构造函数中添加:

   markingColors.Add(MarkingColor.black,  new ColorPt(113 / 255.0, 113 / 255.0, 113 / 255.0));
        markingColors.Add(MarkingColor.yellow, new ColorPt(1, 1, 0));
        markingColors.Add(MarkingColor.red,    new ColorPt(1, 0, 0));
        markingColors.Add(MarkingColor.green,  new ColorPt(0, 1, 0));
        markingColors.Add(MarkingColor.blue,   new ColorPt(45/255.0, 126/255.0, 205/255.0));

问题是,如果在保存并重新打开pdf后将注释的颜色设置为黑色或蓝色(双重类型值),则无法检索注释的颜色。

检查颜色是否相等(以获得具有特定颜色的高光 将它们导出到rtf文档并根据rtf文档中的颜色添加缩进):

 private bool ColorsEqual(ColorPt color1, ColorPt color2)
    {

        if (color1.Get(0) != color2.Get(0))
        {
            return false;
        }
        if (color1.Get(1) != color2.Get(1))
        {
            return false;
        }
        if (color1.Get(2) != color2.Get(2))
        {
            return false;
        }
        return true;
    }

我这样称呼它:

 foreach (MarkingColor color in colors)
                    {
                        if (ColorsEqual(annotation.GetColorAsRGB(), markingColors[color]))
                        {
                            int indentation = indentations[color];
                            for (int j = 1; j <= indentation; j++)
                            {
                                text += " ";
                            }
                            text += annotation.GetContents();
                            break;
                        }
                    }

但是注释的颜色总是返回一个整数值而不是一个double,这就是为什么黑色和蓝色都不起作用...如果提取是立即完成而不是重新打开pdf,那就没有问题和颜色工作得很好

如何解决这个问题?

0 个答案:

没有答案