I’m trying to modify the “ReplaceFieldsWithStaticText.Program.FieldsHelper” from the Samples packs to flatten out all date fields in a document (FieldCreateDate, FieldDate, FieldPrintDate etc) no matter where it occurs.
The sample works fine with the document provided, but I’m having trouble making it work across the whole document. If I pass the parent document node as a “CompositeNode”, would it do all the nodes (header/footer, tables etc)? E.g.
I had tried this and it didn’t seem to find the fields on the header/footer when I was debugging.
I also changed the ConvertFieldsToStaticText to only have 1 parameter (CompositeNode) and sequentially called the FieldsHelper for the date fields e.g.
helper = new FieldsHelper(FieldType.FieldCreateDate);
compositeNode.Accept(helper);
helper = new FieldsHelper(FieldType.FieldDate);
compositeNode.Accept(helper);
helper = new FieldsHelper(FieldType.FieldPrintDate);
compositeNode.Accept(helper);
… etc
Is this an acceptable way to do it? I’m not sure if I should be saving the composite node after every call or is Accept() good enough. Is there a better way to achieve this?
Lastly, I just want to check that the sample code flattens the field with current displayed text not the actual current value. For example if I have a {FileName} field for a document “1.docx” and close + save the document, then in Windows Explorer rename the document to “2.docx”, then when I open the document in Aspose and convert the field to static text, it will show “1.docx” as that was the last evaluated field eventhough the document is now 2.docx (assuming I haven’t called Document.UpdateFields()).
Thanks for your inquiry. In case you are using an older version of Aspose.Words, I would suggest you please upgrade to the latest version (v13.4.0) from here and let us know how it goes on your side.
GaryO:
The sample works fine with the document provided, but I’m having trouble making it work across the whole document. If I pass the parent document node as a “CompositeNode”, would it do all the nodes (header/footer, tables etc)? E.g.
Yes, this code works for header/footer when you pass Document Node in ConvertFieldsToStaticText method. Please see the following code snippet for your kind reference.
GaryO:
Lastly, I just want to check that the sample code flattens the field with current displayed text not the actual current value. For example if I have a {FileName} field for a document “1.docx” and close + save the document, then in Windows Explorer rename the document to “2.docx”, then when I open the document in Aspose and convert the field to static text, it will show “1.docx” as that was the last evaluated field eventhough the document is now 2.docx (assuming I haven’t called Document.UpdateFields()).
Please update all fields by using MS Word and check the output of FileName field. In your case, I suggest you please call the Document.Update Fields method before calling ConvertFieldsToStaticText method. Please read following documentation link for your kind reference. https://reference.aspose.com/words/net/aspose.words.fields/field/
If the problem still remains, please attach your input Word document here for testing. I will investigate the issue on my side and provide you more information.
Sets consent for sending user data to Google for online advertising purposes.
Sets consent for personalized advertising.
Cookie Notice
To provide you with the best experience, we use cookies for personalization, analytics, and ads. By using our site, you agree to our cookie policy.
More info
Enables storage, such as cookies, related to analytics.
Enables storage, such as cookies, related to advertising.
Sets consent for sending user data to Google for online advertising purposes.
Sets consent for personalized advertising.
Cookie Notice
To provide you with the best experience, we use cookies for personalization, analytics, and ads. By using our site, you agree to our cookie policy.
More info
Enables storage, such as cookies, related to analytics.
Enables storage, such as cookies, related to advertising.
Sets consent for sending user data to Google for online advertising purposes.