Поєднання кількох файлів PowerPoint в одну, завершену презентацію може бути складним завданням, особливо коли ви хочете залишатися незалежним від API. Нещодавно я зіткнувся з цією проблемою і знайшов бібліотеку, яка допомагає вирішити її: pptx-automizer. Спочатку розроблена для шаблонізації, вона також підтримує об'єднання файлів PPTX.
У цій статті я поділюсь своїм досвідом використання pptx-automizer, а також надам простий приклад, щоб допомогти вам почати. Крім того, я виокремлю деякі поширені труднощі та підкажу, як їх вирішити.
Приклад коду:
Ось короткий скрипт на Node.js для об'єднання кількох файлів PPTX.
User is a Java developer venturing into Node.js.Не соромтесь поділитися порадами з оптимізації — я Java-розробник, який починає працювати з Node.js! Якщо вам сподобався код, будь ласка, загляньте до мого GitHub і поставте зірочку проекту.
const {Automizer} = require('pptx-automizer');
const fs = require("fs");
const automizer = new Automizer({
// todo : змінити на фактичний каталог
templateDir: '',
// todo : змінити на фактичний каталог
templateFallbackDir: '',
// не потрібно
outputDir: '',
useCreationIds: false,
autoImportSlideMasters: false,
removeExistingSlides: false,
cleanup: false
});
function buildPresentation(templates) {
let presentation = automizer
.loadRoot(templates[0])
if (templates.length > 1) {
for (let i = 1; i < templates.length; i++) {
presentation.load(templates[i], `template-${i}`)
}
}
return presentation;
}
async function addSlides (files, pres){
for (let i = 1; i < files.length; i++) {
await pres
.getTemplate(`template-${i}`)
.getAllSlideNumbers()
.then(function (result) {
for (let j = 0; j < result.length; j++) {
pres
.addSlide(`template-${i}`, result[j])
}
});
}
}
async function execute() {
const files = ["1.pptx","2.pptx"]
let pres = buildPresentation(files)
// todo : змінити шлях
const outputFile = './test.pptx'
addSlides(files,pres).then(async () => {
const result = await pres.getJSZip();
const res = await result.generateAsync({type: 'nodebuffer'})
await fs.writeFileSync(outputFile, res)
return res;
});
}
execute().then();
Обмеження та поради:
1 — Майстри слайдів:
- Бібліотека має труднощі з обробкою декількох майстрів слайдів.
Переконайтесь, що у вашій презентації є лише один майстер слайдів; в іншому випадку можуть виникнути помилки під час відкриття об'єднаного файлу. - Слайди з різними майстрами (наприклад, один з титулом і підзаголовком, а інший тільки з титулом) слід розділити на окремі презентації.
2 — Фонові зображення:
- Фонові зображення можуть не зливатися належним чином, якщо вони не вбудовані безпосередньо в майстер слайдів, помістіть їх у фон кожного слайду.
3 — Непотрібні майстри слайдів:
- Видаліть усі непотрібні або зайві майстри слайдів з файлів перед об'єднанням. Якщо існує більше ніж два майстри слайдів, подумайте про поділ файлів на більш дрібні.
4 — Коментарі та обмежені слайди:
- Слайди з коментарями або обмеженнями можуть пошкодити об'єднаний файл. Використовуйте чисті версії без коментарів або обмежень.
Об'єднання файлів PowerPoint за допомогою Node.js більше не є головним болем, завдяки pptx-automizer. З невеликою підготовкою ви можете досягти безперебійних результатів.
Перегляньте повну реалізацію та додаткові поради на моєму GitHub.
Чи пробували ви об'єднувати файли PPTX за допомогою інших бібліотек? Поділіться своїми думками та відгуками в коментарях!
Перекладено з: How to merge PowerPoint PPTX files in NodeJs