2017-02-02 8 views
3

Я попытался слить два файла pptx через java api (Apache POI) Он работал для PPTX, имеющего только текстовое содержимое.Как слить два файла pptx с диаграммами и таблицами с помощью java api?

Нужна помощь, чтобы объединить два файла PPTX без потери графики, таблицы, изображения, темы и т.д., хотя любой открытым исходным кодом Java API,

+1

В настоящее время POI игнорирует диаграммы, поэтому, если вы решили использовать POI, вам нужно будет реализовать копирование самостоятельно, то есть вы имеете доступ на низкоуровневый доступ к диаграмме/темам xmls и также необходимо обрабатывать отношения – kiwiwings

ответ

0

Раскрытие: Я работаю Plutext

Plutext в docx4j Enterprise Edition может объединить сложные презентации. Вы решаете, принимает ли результат внешний вид первого pptx или сохраняет индивидуальный внешний вид входов. Поскольку простое использование выглядит так:

String[] deck = {"deck1.pptx", "deck2.pptx"};    

    PresentationBuilder builder = new PresentationBuilder();    
    builder.setThemeTreatment(ThemeTreatment.RESPECT); // preserve appearance of each deck? 

    for (int i=0 ; i< deck.length; i++) { 

     // Create a SlideRange representing the slides in this pptx 
     SlideRange sr = new SlideRange(
       (PresentationMLPackage)OpcPackage.load(
             new File(DIR_IN + deck[i]))); 

     // Add the slide range to the output 
     builder.addSlideRange(sr); 

    } 

    builder.getResult().save(
      new File("OUT_MergeWholePresentations.pptx")); 

Docx4j Enterprise Ed - это коммерческий продукт. Я не знаю открытого решения, которое предлагает то, что вы хотите с помощью API высокого уровня. Как и в случае с POI, вы можете реализовать то, что хотите, используя API с открытым исходным кодом docx4j/pptx4j с открытым исходным кодом, но для этого вам потребуется достойное понимание формата файла pptx и pptx4j. (docx4j/pptx4j использует JAXB, POI использует XML-компоненты)