Я получаю двоичные данные изображения как ArrayBuffer
и вставляю их в документ, используя docx. js:
getImageBinaryDataAsArrayBuffer().then(function (imageBuffer) {
var doc = new docx.Document();
var image = docx.Media.addImage(doc, imageBuffer);
doc.addSection({
children: [
new docx.Paragraph({
children: [image],
alignment: docx.AlignmentType.CENTER
}),
]
});
docx.Packer.toBlob(doc).then(function (blob) {
// save the doc somewhere
})
}).catch(function (err) {
console.log(err);
});
Это работает, но кажется, что размер изображения по умолчанию 100x100, и не сохраняет соотношение сторон. В документации docx. js для изображений похоже, что вы можете указать высоту и ширину при добавлении изображения в do c:
Media.addImage(doc, [IMAGE_BUFFER], [WIDTH], [HEIGHT], [POSITION_OPTIONS]);
, но я не знаю естественную высоту и ширину изображения, так как все, с чем я работаю, это ArrayBuffer
. (Можете ли вы определить высоту и ширину изображения по данным ArrayBuffer
? Моя интуиция говорит нет ...)
Есть ли способ указать docx. js, чтобы использовать естественную высоту и ширину изображения? Или хотя бы сохранить соотношение сторон?