我正在尝试使用Aspose将Word文档(链接到以下未按预期提供的示例文件的链接)导出为PDF。
https://1drv.ms/w/s!AheHNqR6oXmSmd5H80L0vzCTfVVrTg

相同的代码如下。

var doc=new Document(<streamFromTheFile>); // Aspose.Words.Document
doc.UpdateFields();// This is required for any possible formula
var outStream=new MemoryStream();
doc.Save(outStream, SaveFormat.Pdf); // Aspose.Words.SaveFormat
File.WriteAllBytes(<exportPdfFilePath>, outStream.ToArray());


除了在示例文档中具有合并字段的文件以外,其他所有文件都可以正常工作,在示例文件中,即使当前值也会丢失,并被诸如«AtpIssueDate»之类的合并字段名称所替代。取消UpdateFields()方法调用可解决此问题,但无法完成,因为它破坏了逻辑。请帮助如何保留合并字段的值,而无需在导出时删除UpdateFields()调用。

最佳答案

您可以通过使用以下代码来解决此问题:

Document doc = new Document("D:\\temp\\so.docx");

// LOCK merge fields before Updatefields method call
foreach(Field field in doc.Range.Fields)
{
    if (field.Type == FieldType.FieldMergeField)
    {
        field.IsLocked = true;
    }
}

doc.UpdateFields();

// UN-LOCK merge fields after Updatefields method call
foreach (Field field in doc.Range.Fields)
{
    if (field.Type == FieldType.FieldMergeField)
    {
        field.IsLocked = false;
    }
}

doc.Save("D:\\temp\\18.10.pdf");


希望这可以帮助。我与Aspose一起担任开发人员推广人员。

关于c# - Aspose在文档上调用UpdateFields()会丢失邮件合并字段数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53025761/

10-11 02:18