Так что для проекта, над которым я работаю, я должен сделать дополнение для Office. В этом дополнении мне нужно открыть другие файлы PPTX из дополнения. Я обнаружил, что мне нужно использовать base64 для функции PowerPoint.createPresentation (). Когда я жестко кодирую строку base64, она работает, но мне нужно сгенерировать строку из файла, выбранного пользователем, который извлекается с сервера.
Если честно, я не очень много пробовал. Я все еще довольно плохо знаком с программированием и нашел вещи онлайн. Я нашел что-то в Интернете, но понятия не имею, как это реализовать. Большинство результатов, которые я получил, были с Javascript. Я знаю, что он должен работать внутри Typescript, но, как я уже говорил, я понятия не имею, как реализовать его в виде кода JavaScript или кода машинописи.
Текущая ситуация такова, что я получаю строку Base64 из массива. Когда пользователь выбирает опцию, выбранный pptx открывается. Строка в настоящее время жестко запрограммирована в.
HTML:
<div *ngFor="let template of templates">
<button (click)="onClickOpenTemplate(template.src)">
<img src="{{ template.img }}" alt="">
<h3>{{ template.name }}</h3>
</button>
</div>
Машинопись:
templates: any[] = [
{
src: 'base64string',
name: 'filename',
img: 'imgPath'
},
{
src: 'base64string',
name: 'filename',
img: 'imgPath'
},
];
async onCreateOpenPresentation(template) {
PowerPoint.createPresentation(template);
}
Результат, который я хотел бы получить, заключается в том, что при нажатии кнопки, функция получит файл pptx, преобразует его в base64, а затем откроет его в новом окне powerpoint вместо жестко закодированной строки base64.
Редактировать: я пытался найти какой-то код, найденный где-то
// window.open(template);
// tslint:disable-next-line: prefer-const
let ActiveXObject: (type: string) => void;
try {
const fso = new ActiveXObject('Scripting.FileSystemObject');
const file = fso.OpenTextFile(template, 1);
const fileContent = file.ReadAll();
file.Close();
return fileContent;
} catch (e) {
if (e.number === -2146827859) {
alert('Unable to access local files due to browser security settings. ' +
'To overcome this, go to Tools->Internet Options->Security->Custom Level. ' +
// tslint:disable-next-line: max-line-length
'Find the setting for "Initialize and script ActiveX controls not marked as safe" and change it to "Enable" or "Prompt"');
}
}
const templateBase64 = window.btoa(fileContent);
console.log(templateBase64);
PowerPoint.createPresentation(templateBase64);
Но, к сожалению, fileContent в window.btao () не распознается. У кого-нибудь сейчас как можно это исправить?