Giter VIP home page Giter VIP logo

Comments (7)

anagami avatar anagami commented on July 20, 2024 2

Any updates on this in 2020?

Any news in 2023? :)

from officegen.

 avatar commented on July 20, 2024

Concur, it'd be awesome to construct a new PPTX object from an existing .pptx file.

from officegen.

pietersv avatar pietersv commented on July 20, 2024

There are two ways to frame this question:

  • Narrow: can we import themes from an existing pres?
  • Broad: can we use use an existing pres as the starting point (including existing slides, layouts, etc.)

The broad one would be great. Starting small, it's technically possible to import the theme from an existing presentation. As a quick hack, if we modify the source code to lib/msofficegen.js to add the following line:

function cbMakeTheme ( data ) {
    if (options.theme) return options.theme;  // add this line
    var theme = ... <long XML string>
    return gen_private.plugs.type.msoffice.cbMakeMsOfficeBasicXml ( data ) + theme ;
}

We can then extract a theme from an existing presentation and pass it as an option:

var AdmZip = require('adm-zip');  // need to install this module
var zip = new AdmZip("/Users/me/MyTemplate.potx");
var theme = zip.readAsText("ppt/theme/theme1.xml");
var pptx = officegen({type: 'pptx', theme:theme });

Looking at the code, it's not immediately clear to me how to extend an entire document. The basic logic is to generate the entire XML as a catenation of various resource objects described as XML snippets returned by various cbMakeSomething() callbacks.

I wonder if we can iteratively apply this narrow approach, and extend all the various such that they can either provide stock code (as today) or extract their equivalent from an existing doc.

Thinking out loud, one approach might be to unzip the file, extract each component, parse the XML using node-xml2js, and turn those into resources, which can be edited as JS objects (thus addressing issues #25 and #50) and which get turned back into XML using xmlbuilderhttps://github.com/oozcitak/xmlbuilder-js.

The risk is that maybe existing docs have components that we're not expecting, so either we're okay with these being dropped or we have a general way to iterate and turn components into resources.

from officegen.

DirkStevens avatar DirkStevens commented on July 20, 2024

@gradualstudent @Ziv-Barber There's a project by @edi9999 called docxtemplater:
https://github.com/edi9999/docxtemplater

which also has a work-in-progress pptx templater part.

I have tried docx templater and it works well. Haven't tried the pptx templater yet because I think @edi9999 is still working on it.

I would love to see some integration of these projects - especially the powerpoint templating and creation.

Go do some magic @Ziv-Barber

from officegen.

edi9999 avatar edi9999 commented on July 20, 2024

The base of the pptx templater is working (in docxtemplater), however you can't yet add more slides.

from officegen.

agrinko avatar agrinko commented on July 20, 2024

Any updates on this in 2020?

from officegen.

gtamas avatar gtamas commented on July 20, 2024

Any news on this? @Ziv-Barber

from officegen.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.