2017-02-03 15 views
1

Вот:Как получить значение BackgroundColor для Run в Aspose.Words?

• Aspose.Words

• System.Drawing

Если один из основных .docx документа пункт изменен (с TrackChange всегда включен), вы должны определить цвет фона (цветовой код) модифицированного прогона.

Когда прогон хорошо модифицирован, он определяется правильно (например, когда вместо «подрядчика» был написан «клиент», он отображается как измененный прогон). Как получить код цвета фона?

Документ отформатирован как таблица. Я беру все ячейки. В клетках, я беру все пункты и в пунктах, я беру все прогоны:

foreach(Run run in par.Runs) //par - it's Paragraph in Cells 
{ 
    if(run.IsInsertRevision || run.IsDeleteRevision) //check revisions (in TrackChange) 
    { 
     Paragraph parpar = run.ParentParagraph; //taking parent paragraph 

     Shading shading = builder.ParagraphFormat.Shading; //create a new shading for current paragraph 
     System.Drawing.Color clr = shading.BackgroundPatternColor; //trying to get a backgroung color 

     string r = clr.R.ToString("X2"); 
     string g = clr.G.ToString("X2"); 
     string b = clr.B.ToString("X2"); 

     r = r.Length == 1 ? "0" + r : r; 
     g = g.Length == 1 ? "0" + g : g; 
     b = b.Length == 1 ? "0" + b : b; 

     string code = "#" + r + g + b; 

     Console.WriteLine(code); //it's #000000 instead #fff001 (real backgroung color in the document) 
    } 
} 
+0

'.ToString (" X2 ")' всегда возвращает начальный ноль, поэтому дополнительный код ниже избыточен. –

+0

Вы проверили фактические значения clr.R, clr.G и clr.B? –

+0

Нет, он возвращает HEX-код без начального нуля в моем случае. Я попробовал string.format раньше. –

ответ

1

Пожалуйста, используйте Run.Font.Shading.BackgroundPatternColor свойство для получения BackgroundColor наката узла.

Document doc = new Document(MyDir + "Sample.docx"); 
Table table = (Table)doc.GetChild(NodeType.Table, 0, true); 
foreach (Paragraph par in table.LastRow.LastCell.Paragraphs) 
{ 
    foreach (Run run in par.Runs) //par - it's Paragraph in Cells 
    { 
     if (run.IsInsertRevision || run.IsDeleteRevision) //check revisions (in TrackChange) 
     { 
      Console.WriteLine(run.Font.Shading.BackgroundPatternColor); 
     } 
    } 
} 

Я работаю с Aspose в качестве разработчика-евангелиста.