Я никогда не использовал эту библиотеку, но согласно документации , вы должны фактически передать данные изображения в addImage
.
Есть несколько способов справиться с этим. Один из них - взять экземпляр Image
, нарисовать его на холсте, кодировать данные растрового изображения холста как PNG, а затем кодировать вывод PNG в base64. Это то, что говорится в документации.
Есть другой способ. Вы можете использовать Fetch API. Не проверено, но что-то вроде:
fetch('/assets/img/bgconfidential.png')
.then(res => res.blob())
.then((blob) => {
const reader = new FileReader();
reader.addEventListener('load', () => {
doc.addImage(reader.result, 'png', ...);
});
reader.readAsDataURL(blob);
});
WPF проявляет немного отличающийся подход, чем WinForms здесь. Вместо того, чтобы иметь автоматизацию объекта встроил в API, у них есть отдельный класс для каждого объекта, который ответственен за автоматизацию его. В этом случае Вам нужно ButtonAutomationPeer
выполнить эту задачу.
ButtonAutomationPeer peer = new ButtonAutomationPeer(someButton);
IInvokeProvider invokeProv = peer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
invokeProv.Invoke();
Вот сообщение в блоге на предмете.
Примечание: IInvokeProvider
интерфейс определяется в UIAutomationProvider
блок.
Один способ программно "нажать" кнопку, если у Вас есть доступ к источнику, состоит в том, чтобы просто назвать обработчик событий OnClick кнопки (или Выполнить ICommand, связанный с кнопкой при выполнении вещей большим способом WPF-y).
Почему Вы делаете это? Вы делаете своего рода автоматизированное тестирование, например, или попытку выполнить то же действие, которое кнопка выполняет от другого раздела кода?
Как сказал ДжаредПар, вы можете обратиться к статье Джоша Смита, посвященной автоматизации. Однако, если вы посмотрите комментарии к его статье, вы найдете более элегантный способ поднять события против элементов управления WPF
someButton.RaiseEvent(new RoutedEventArgs(ButtonBase.ClickEvent));
. Я лично предпочитаю приведенный выше вместо пиров автоматизации.