Заменить текст внутри PowerPoint, используя Java - PullRequest
0 голосов
/ 25 мая 2018

У меня есть PPT, содержащий значения в формате: {VALUES}.Я хотел бы заменить текст файла, содержащего {SAMPLE} на SARAN и так далее, используя Java.Ранее я пытался с Apache poi, и у меня не было решения, но я мог найти, что в Docx4j есть метод variableReplace(), который заменит текст.Я пробовал один образец, но не вижу заменяемого текста.

Мой код:

public static void main(String[] args) throws IOException, Docx4JException, Pptx4jException, JAXBException  
{
      String inputfilepath = "C:\\Work\\SampleTemplate.pptx"; 
      PresentationMLPackage pptPackage
          = PresentationMLPackage.load(new File(inputfilepath));
      ThemePart themeSlidePart = (ThemePart) 
          pptPackage.getParts().getParts().get(new PartName("/ppt/theme/theme1.xml"));
      Theme themeOfSlides = (Theme)themeSlidePart.getJaxbElement();                     
      SlidePart slide = pptPackage.getMainPresentationPart().getSlide(0);
      HashMap h = new HashMap<String, String>();
      h.put("SlideTitleName", "SARANYA");
      slide.variableReplace(h);
      String outputfilepath = "C:\\Work\\24Jan2018_CheckOut\\dhl\\PPT-TRAILS\\SampleTemplate.pptx";
      PresentationMLPackage pptPackagetoApply
          = PresentationMLPackage.load(new File(outputfilepath));
      ThemePart themeSlidePartToApply
          = (ThemePart) pptPackagetoApply.getParts().getParts()
              .get(new PartName("/ppt/theme/theme1.xml"));
      themeSlidePartToApply.setJaxbElement(themeOfSlides);
      SaveToZipFile saver = new SaveToZipFile(pptPackagetoApply);
      saver.save(outputfilepath);
}

Но текст по-прежнему не заменяется.Я попытался с новым файлом PPTX с только текстом "$ {SlideTitleName}" внутри него.Но все равно это не работает.


Я хотел бы добавить много строк в шаблон pptx, используя цикл for, я попробовал следующее,

Java:

  if(majorAchievements.size()>0){

        System.out.println("majorAchievements Size in Servlet is : "+majorAchievements.size() + " and value of get(0) is : "+ majorAchievements.get(0) ); 

        for(int i=0;i<majorAchievements.size();i++){

            achievements=(String) majorAchievements.get(i);

        }
    }


mappings.put("MajorAchievementText", achievements);

и внутри моего pptfile,

я добавил две строки с одинаковым $ {MajorAchievementText}.

Приведенный выше список извлекает 2 строки.Но внутри PPT это не заменить.Пожалуйста, помогите мне, как заменить текст с помощью итерации.

С уважением, Saranya C

...