使用GemBox

时间:2017-09-26 06:51:37

标签: vb.net ms-word gembox-document docvariable

我的文档有DOCPROPERTY字段,我正在尝试更新它们(Title,SubTitle等)。

Dim title As String = "New Title"
Dim subTitle As String = "New Sub Title"
Dim document = DocumentModel.Load(inputFile)

document.DocumentProperties.BuiltIn(BuiltInDocumentProperty.Title) = title
document.DocumentProperties.Custom("SubTitle") = subTitle

document.Save(outputFile)

但最终文档没有显示更新的值,只有按下F9后才能在MS Word中刷新它们后才会看到它们。 如何使用GemBox.Document刷新它们?

我还有一些DOCVARIABLE字段,用宏更新。我可以用GemBox.Document更新它们吗?

1 个答案:

答案 0 :(得分:2)

保存到DOCX文件时,GemBox.Document不会自动更新DOCPROPERTY字段。但是,在保存为PDF,XPS或图像格式以及打印时会更新它们 不过,您可以使用以下内容更新它们:

Dim variables As VariablesDictionary = document.Variables

For Each field As Field In document.GetChildElements(True, ElementType.Field).Cast(Of Field)().Where(Function(f) f.FieldType = FieldType.DocVariable)
    Dim instruction As String = field.GetInstructionText()
    Dim variableName As String = If(instruction.IndexOf(" "c) < 0, instruction, instruction.Remove(instruction.IndexOf(" "c)))
    Dim value As String = Nothing

    If variables.TryGetValue(variableName, value) Then
        field.ResultInlines.Clear()
        field.ResultInlines.Add(New Run(document, value) With {.CharacterFormat = field.CharacterFormat.Clone()})
    End If
Next

关于DOCVARIABLE字段,目前无法使用GemBox.Document更新这些字段。

<强>更新

当前最新的GemBox.Document错误修复版本引入了对DocumentModel.Variables的API支持,因此从现在开始可以更新DOCVARIABLE字段,例如以下内容:

<?php

$arraycolor = array('linkcolour','linkcolour o80','linkcolour o60','linkcolour o40','linkcolour o20');

$link = array('1','2','3','4','5','6','7','8','9','10');

$i=0;
foreach($link as $v)
{

?>
<a href="link.php">
        <span class="<?php echo $arraycolor[$i] ?>"></span>
       <span class="linkText"><?php echo $arraycolor[$i] ?></span>
     </a>
<br/>
<?php
    $i++;
    if($i==count($arraycolor))
    { 
        $i=0;
    }

}
?>
相关问题