2017-02-03 5 views
1

hier:Wie erhält man den BackgroundColor-Wert für Run in Aspose.Words?

• Aspose.Words

• System.Drawing

Wenn einer der wichtigsten .docx-Dokument Absatz geändert wird (mit TrackChange immer aktiviert ist), haben Sie die Hintergrundfarbe zu bestimmen, (Farbcode) des modifizierten Laufs.

Wenn ein Lauf gut modifiziert wird, wird er korrekt ermittelt (wenn z. B. "Client" anstelle von "Auftragnehmer" geschrieben wurde, wird er als modifizierter Lauf angezeigt). Wie bekomme ich den Hintergrundfarbcode?

Das Dokument ist als Tabelle formatiert. Ich nehme alle Zellen. In den Zellen, nehme ich alle Absätze und in den Absätzen, ich nehme alle Läufe:

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 ")' gibt immer eine führende Null zurück, daher ist der zusätzliche Code überflüssig. –

+0

Haben Sie die tatsächlichen Werte von clr.R, clr.G und clr.B überprüft? –

+0

Nein, es gibt HEX-Code ohne eine führende Null in meinem Fall zurück. Ich habe es vorher mit string.format versucht. –

Antwort

1

Bitte benutzen Sie Run.Font.Shading.BackgroundPatternColor Eigenschaft die Background von Run-Knoten zu erhalten.

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); 
     } 
    } 
} 

Ich arbeite mit Aspose als Entwickler Evangelist.

Verwandte Themen