Substitua campos por texto estático

A substituição de campos geralmente é necessária quando você deseja salvar seu documento como uma cópia estática. Por exemplo, ao enviar como anexo de um e-mail. A conversão de campos como DATE ou TIME em texto estático permitirá que o documento exiba a mesma data de quando foi enviado. Além disso, em algumas situações, pode ser necessário remover os campos IF condicionais do documento e substituí-los pelo resultado de texto mais recente. Por exemplo, converter o resultado do campo IF em texto estático para que seu valor não seja mais alterado dinamicamente quando os campos do documento forem atualizados.

O diagrama abaixo mostra como o campo IF é armazenado em um documento:

  • o texto é cercado por nós de campo especiais – FieldStart e FieldEnd
  • o nó FieldSeparator separa o texto dentro do campo no código do campo e no resultado do campo
  • o código do campo define o comportamento geral do campo, enquanto o resultado do campo retém o resultado mais recente quando este campo é atualizado usando Microsoft Word ou Aspose.Words
  • o resultado do campo é o que é armazenado no campo e exibido no documento quando visualizado

update-remove-a-field-aspose-words

A estrutura também pode ser vista abaixo de forma hierárquica utilizando o projeto de demonstração “DocumentExplorer”.

update-remove-a-field-aspose-words-2

Campos que não podem ser substituídos por texto

Substituir um campo por texto estático não funciona corretamente para alguns campos de cabeçalho ou rodapé.

Por exemplo, tentar converter o campo PAGE em um cabeçalho ou rodapé em texto estático resultará na exibição do mesmo valor em todas as páginas. Isso ocorre porque os cabeçalhos e rodapés são repetidos em várias páginas e, quando permanecem como campos, são tratados especialmente para exibir o resultado correto para cada página.

No entanto, no cabeçalho, o campo PAGE se traduz bem em execução estática de texto. Essa sequência de texto será avaliada como se fosse a última página da seção, o que fará com que qualquer campo PAGE no cabeçalho exiba a última página em todas as páginas.

O exemplo de código a seguir mostra como substituir o campo pelo resultado mais recente:

Converter certos tipos de campos em partes específicas do documento

Como o método ConvertFieldsToStaticText aceita dois parâmetros – as propriedades CompositeNode e a enumeração FieldType, é possível passar qualquer nó composto para este método. Isto permite que os campos sejam convertidos em texto estático apenas em partes específicas do documento.

Por exemplo, você pode passar um objeto Document e converter campos do tipo especificado de todo o documento em texto estático, ou pode passar um objeto Body de uma seção e converter apenas os campos encontrados nesse corpo.

A enumeração FieldType passada para o método ConvertFieldsToStaticText especifica que tipo de campo deve ser convertido em texto estático. Qualquer outro tipo de campo encontrado no documento permanecerá inalterado.

O exemplo de código a seguir mostra como selecionar campos de um tipo específico – targetFieldType em um nó específico – compositeNode e depois convertê-los em texto estático:

O exemplo de código a seguir mostra como converter todos os campos IF de um documento em texto estático:

O exemplo de código a seguir mostra como converter todos os campos PAGE em um corpo de documento em texto estático:

O exemplo de código a seguir mostra como converter todos os campos IF do último parágrafo em texto estático: