Добавить коды полей в поле INCLUDEIMAGE - PullRequest
0 голосов
/ 25 февраля 2019

Нам нужно установить флаг «Данные не сохранены с документом» («\ d») при добавлении поля в существующий документ Word через Interop, но мы не можем понять, как это сделать.

ЭтоПример хорошо работает с точки зрения вставки ссылки на изображение, но хранит изображение внутри документа, а не удаленно (что нам нужно).

            if (doc.Bookmarks.Exists("TrackingPixel"))
            {
                object oBookMark = "TrackingPixel";
                object newText = @"https://www.remotelocation.com/trackingpixel/secretcode";

                Range rng = doc.Bookmarks.get_Item(ref oBookMark).Range;
                rng.Select();

                rng.Fields.Add(
                    Range: rng,
                    Type: WdFieldType.wdFieldIncludePicture,
                    Text: newText,
                    PreserveFormatting: true
                    );

            }

Любое удержание будет оценено.Спасибо.

1 Ответ

0 голосов
/ 25 февраля 2019

Существует несколько способов добавления переключателей в коды полей.

В случае, представленном в вопросе, переключатель можно добавить к строке, передаваемой параметру Text:

    if (doc.Bookmarks.Exists("TrackingPixel"))
    {
        string fieldSwitches = " \d";
        object oBookMark = "TrackingPixel";
        object newText = @"https://www.remotelocation.com/trackingpixel/secretcode" + fieldSwitches;

        Range rng = doc.Bookmarks.get_Item(ref oBookMark).Range;
        // There's usually no need to select the Range unless the user should work with it
        //rng.Select();

        rng.Fields.Add(
            Range: rng,
            Type: WdFieldType.wdFieldIncludePicture,
            Text: newText,
            PreserveFormatting: true
            );
    }

Если бы это был существующий код поля (ключ должен быть добавлен после факта), можно назначить новое содержимое для строки.Например:

string fldCode = field.Code.Text;
fldCode += " \d";
field.Code.Text = fldCode;
field.Update();

FWIW при добавлении поля я часто передаю весь код поля в виде строки (используйте только параметр Text) и пропускаю параметр Type.Я также установлю PreserveFormatting на false, если только не знаю, что явно хочу такое поведение.Первое - это личное предпочтение.Во-вторых, переключатель \* MergeFormat может привести к очень странному поведению, когда код поля обновляется другим (отформатированным, строковым) содержимым.Я буду использовать его, однако, для связанных таблиц.

...