Добавить коды полей в поле INCLUDEIMAGE
Нам нужно установить флаг "Данные не хранятся вместе с документом" ("\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 ответ
Существует несколько способов добавления переключателей в коды полей.
В случае, представленном в вопросе, переключатель может быть добавлен к строке, переданной в 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
Переключатель может привести к очень странному поведению, когда код поля обновляется другим (отформатированным, строковым) содержимым. Я буду использовать его, однако, для связанных таблиц.