Что я хочу сделать на JavaScript? Открываю Word(doc) документ с помощью ActiveXObject('Word.Application'), нахожу InlilneShape, использую property shape.Range.EnhMetaFileBits чтобы получить байты изображения и пытаюсь преобразовать его в base64, чтобы показать в браузере.
Проблема. Согласно документации
The EnhMetaFileBits property returns an array of bytes, which can be used with the Microsoft Windows 32 Application Programming Interface from within the Microsoft Visual Basic or Microsoft C++ development environment.
Мне кажется, я не получаю от EnhMetaFileBits байтов или массив байтов. Как получить байты и преобразовать их в base64? Может подскажете книги о работе с байтами на JavaScript.
function paragraphToHtml(paragraph) {
for (let i = 1; i <= paragraph.Range.InlineShapes.Count; i++) {
let shape = paragraph.Range.InlineShapes(i);
let imageBits = shape.Range.EnhMetaFileBits;
// Как работать с imageBits?
console.log(typeof imageBits === 'unknown') // true
console.log(imageBits) // ничего непоказывает
// Что дальше делать?
}
}
Рабочий код на Python, которого надо переписать на JScriptfrom PIL import Image
from io import BytesIO
def paragraph_to_html(para):
img_temp = '<img align="Middle" src="data:image/png;base64,{0}" />'
for shape in para.Range.InlineShapes:
wmfim = Image.open(BytesIO(shape.Range.EnhMetaFileBits))
bimage = BytesIO()
wmfim.save(bimage, format='png')
img_str = base64.b64encode(bimage.getvalue())
shape.Range.Text = img_temp.format(img_str.decode('ascii'))
return para.Range.Text.strip()