У меня есть 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