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)
}
}
'.ToString (" X2 ")' gibt immer eine führende Null zurück, daher ist der zusätzliche Code überflüssig. –
Haben Sie die tatsächlichen Werte von clr.R, clr.G und clr.B überprüft? –
Nein, es gibt HEX-Code ohne eine führende Null in meinem Fall zurück. Ich habe es vorher mit string.format versucht. –