Atualizar campos
Normalmente, um campo inserido no 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 determinada versão do documento. Mas se você tiver um aplicativo que gera ou modifica um documento com campos como mesclar dois documentos ou preenchê-lo com dados, o ideal é que todos os campos sejam atualizados para que o documento seja útil.
Como atualizar campos
Quando um documento é carregado, o Aspose.Words imita o comportamento do Microsoft Word com a opção de atualizar campos automaticamente desativada. O comportamento pode ser resumido da seguinte forma:
- quando você abre/salva um documento, os campos permanecem intactos
- você pode atualizar explicitamente todos os campos de um documento, por exemplo, reconstruir
TOC
, quando precisar - quando você imprime/renderiza em PDF ou XPS, os campos relacionados à numeração de páginas em cabeçalhos/rodapés são atualizados
- quando você executa Mail Merge todos os campos são atualizados automaticamente
Atualizar campos programaticamente
Para atualizar explicitamente os campos em todo o documento, basta chamar o método UpdateFields. Para atualizar campos contidos em parte de um documento, obtenha um objeto Range e chame o método UpdateFields. No Aspose.Words, você pode obter um Range para qualquer nó da árvore de documentos, como Section, HeaderFooter, Paragraph, etc., usando a propriedade Node.Range. Você pode atualizar o resultado de um único campo chamando o método Update.
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, o Aspose.Words atualizará automaticamente os campos relacionados ao layout da página PAGE
, PAGEREF
encontrados nos cabeçalhos/rodapés do documento. Este comportamento imita o comportamento do Microsoft Word ao imprimir um documento.
Se quiser atualizar todos os outros campos do documento, será necessário chamar UpdateFields antes de renderizar o documento.
O exemplo de código a seguir mostra como atualizar todos os campos antes de renderizar um documento:
Atualização automática de campo durante Mail Merge
Ao executar um mail merge, todos os campos do documento serão atualizados automaticamente. Isso ocorre porque o Mail Merge é um caso de atualização de campo. O programa encontra um campo Mail Merge e precisa atualizar seu resultado, o que envolve pegar o valor da fonte de dados e inseri-lo no campo. A lógica é obviamente mais complicada, por exemplo, quando o final da região do documento/mail merge é atingido, mas ainda há mais dados a serem mesclados, então a região precisa ser duplicada e o novo conjunto de campos atualizado.
Atualizar campos com atributos sujos
O w:dirty é um atributo de nível de campo que atualizará apenas o campo especificado quando o documento for aberto. Diz ao MS Word para atualizar este campo apenas na próxima vez que o documento for aberto. Você pode usar a propriedade UpdateDirtyFields para especificar se deseja atualizar os campos com o atributo sujo. Quando o valor de UpdateDirtyFields é definido como true, todos os campos com valor true para propriedade Field.IsDirty ou FieldChar.IsDirty são atualizados no carregamento do documento.
O exemplo de código a seguir mostra como atualizar campos que possuem o atributo dirty:
Atualize a propriedade LastSavedTime antes de salvar
Você pode usar a propriedade UpdateLastSavedTimeProperty para atualizar a propriedade LastSavedTime do documento integrada correspondente ao salvar o documento.
O exemplo de código a seguir mostra como atualizar essa propriedade: