Campos de atualização

Tipicamente, um campo inserido Microsoft Word já contém um valor atualizado. Por exemplo, se o campo for uma fórmula ou um número de página, ele conterá o valor calculado correto para a versão dada do documento. Mas se você tem um aplicativo que gera ou modifica um documento com campos como a fusão de dois documentos ou a população com dados, então idealmente todos os campos devem ser atualizados para que o documento seja útil.

Como Atualizar Campos

Quando um documento é carregado, Aspose.Words imita o comportamento de Microsoft Word com a opção de atualizar automaticamente os campos é desligado. O comportamento pode ser resumido da seguinte forma:

  • quando você abrir / salvar um documento os campos permanecem intactos
  • você pode atualizar explicitamente todos os campos em um documento, por exemplo, reconstruir TOC quando você precisa
  • quando imprimir/render em PDF ou XPS os campos relacionados com a numeração de páginas em cabeçalhos / rodapés são atualizados
  • quando executar mail merge todos os campos são atualizados automaticamente

Atualização de campos Programticamente

Para atualizar explicitamente campos em todo o documento, basta chamar o UpdateFields método. Para atualizar os campos contidos em parte de um documento, obter um Range objeto e chamar o UpdateFields método. Em Aspose.Words, você pode obter um Range para qualquer nó na árvore do documento, como Section, HeaderFooter, Paragraph, etc. usando o GetRange propriedade. Você pode atualizar o resultado de um único campo chamando o Update método.

Atualização automática de campos relacionados à página durante a renderização

Quando você executa a conversão de um documento para um formato de página fixa, por exemplo, para PDF ou XPS, então Aspose.Words atualizará automaticamente os campos relacionados ao layout da página PAGE, PAGEREF encontrados em cabeçalhos/pés do documento. Este comportamento imita o comportamento de Microsoft Word ao imprimir um documento.

Se você quiser atualizar todos os outros campos no documento, então você precisa ligar UpdateFields antes de renderizar o documento.

O exemplo a seguir mostra como atualizar todos os campos antes de renderizar um documento:

Atualização de campo automática durante Mail Merge

Quando você executa um <span notrans="<span notrans=" mail merge"="">, todos os campos no documento serão atualizados automaticamente. Isto é porque o mail merge é um caso de uma atualização de campo. O programa encontra um mail merge campo e precisa atualizar seu resultado, o que envolve pegar o valor da fonte de dados e inseri-lo no campo. A lógica é, naturalmente, mais complicada, por exemplo, quando o fim do documento/mail merge A região é atingida, mas ainda há mais dados a serem fundidos, então a região precisa ser duplicada e o novo conjunto de campos atualizados.

Atualizar campos com atributo sujo

O w:dirty é um atributo de nível de campo que irá atualizar apenas o campo que você especificar quando o documento é aberto. Ele diz ao MS Word para apenas atualizar este campo da próxima vez que o documento é aberto. Você pode usar a propriedade LoadOptions.setUpdateDirtyFields() para especificar se atualizar os campos com o atributo sujo. Quando o valor de LoadOptions.setUpdateDirtyFields() estiver definido como <span notrans="<span notrans=" true"="">, todos os campos tendo true valor para Field.IsDirty ou FieldChar.IsDirty A propriedade é atualizada na carga de documentos

O exemplo de código a seguir mostra como atualizar campos com o atributo sujo:

Actualizar a propriedade LastSavedTime antes de economizar

Você pode usar o UpdateLastSavedTimeProperty propriedade para atualizar a propriedade do documento embutido correspondente LastSavedTime ao salvar o documento.

O exemplo de código a seguir mostra como atualizar esta propriedade: