When I’m converting the IF Field to the plain text of its value, I always get a redundant section break.
The code is below, the file is uploaded.
class Program
{
static void Main(string[] args)
{
Dictionary<string, object> dataSource = new Dictionary<string, object>();
dataSource["Field1"] = 1;
dataSource["Field2"] = 2.5;
License license = new Aspose.Words.License();
license.SetLicense("Aspose.Total.lic");
Document doc = new Aspose.Words.Document(@"Header1.doc");
doc.Accept(new RemoveFields(FieldType.FieldIf));
doc.Save("results.doc");
}
public class RemoveFields : DocumentVisitor
{
private int _level = 0;
private bool Delete
{
get
{
return _level > 0;
}
}
private FieldType removedType;
public RemoveFields(FieldType type)
{
removedType = type;
}
public override VisitorAction VisitFieldStart(Aspose.Words.Fields.FieldStart fieldStart)
{
if (fieldStart.FieldType == removedType)
{
_level++;
}
if (Delete)
{
fieldStart.Remove();
}
return VisitorAction.Continue;
}
public override VisitorAction VisitFieldSeparator(Aspose.Words.Fields.FieldSeparator fieldSeparator)
{
if (Delete)
{
fieldSeparator.Remove();
}
if (fieldSeparator.FieldType == removedType)
{
if (_level == 1)
{
_level–;
}
else if (_level <= 0)
{
throw new Exception();
}
}
return VisitorAction.Continue;
}
public override VisitorAction VisitFieldEnd(Aspose.Words.Fields.FieldEnd fieldEnd)
{
if (fieldEnd.FieldType == removedType)
{
if (_level > 0)
{
_level–;
}
fieldEnd.Remove();
}
else
{
if (Delete)
{
fieldEnd.Remove();
}
}
return VisitorAction.Continue;
}
public override VisitorAction VisitRun(Run run)
{
if (Delete)
run.Remove();
return VisitorAction.Continue;
}
public override VisitorAction VisitTableStart(Table table)
{
if (Delete)
table.Remove();
return VisitorAction.Continue;
}
public override VisitorAction VisitParagraphStart(Paragraph paragraph)
{
if (Delete)
paragraph.Remove();
return VisitorAction.Continue;
}
}
}
The Header1.doc is:
Header1(SectionBreakHere)
{ IF 1 = 2 “Some Text Never Be Shown” “” }(SectionBreakHere)
{ IF True = True “Header 7 test test(SectionBreakHere)” “” }
Then, when the file is processed, it is:
Header1(SectionBreakHere)
(SectionBreakHere)
(SectionBreakHere)
Header 7
test
test(SectionBreakHere)
there is a redundant (SectionBreakHere) before "Header 7 "
Is there anything wrong with my code?
Thanks!