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
A estrutura também pode ser vista abaixo de forma hierárquica utilizando o projeto de demonstração “DocumentExplorer”.
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:
EXEMPLO
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: