Files
gpustack-ui/src/utils/pptx-reader.ts
T
2024-11-22 10:00:34 +08:00

41 lines
1.3 KiB
TypeScript

import JSZip from 'jszip';
const readPptxContent = (file: File): Promise<string> => {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = function (e: any) {
const arrayBuffer = e.target.result;
JSZip.loadAsync(arrayBuffer).then(function (zip: any) {
const slideFiles = Object.keys(zip.files).filter(function (fileName) {
return (
fileName.startsWith('ppt/slides/slide') && fileName.endsWith('.xml')
);
});
let slideText = '';
const slidePromises = slideFiles.map((slideFile) =>
zip
.file(slideFile)
.async('string')
.then(function (content: any) {
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(content, 'application/xml');
const texts = xmlDoc.getElementsByTagName('a:t');
for (let i = 0; i < texts.length; i++) {
slideText += texts[i].textContent + '\n';
}
})
);
Promise.all(slidePromises).then(() => {
resolve(slideText);
});
});
};
reader.onerror = (error) => reject(error);
reader.readAsArrayBuffer(file);
});
};
export default readPptxContent;