Ошибка при открытии файла PPT, порожденную Apache POI
Я генерации презентации Powerpoint с помощью Apache POI - XSLF, на лету, когда пользователь нажимает на определенную ссылку на моем сайте. У меня есть несколько таблиц с данными в файле презентации, а также изображение (линейная диаграмма), сгенерированное с помощью jfreechart. Когда я открываю PPTX на моей машине, он работает нормально. Однако, когда я открываю файл на другом компьютере с PowerPoint 2013, я получаю следующую ошибку.
«Powerpoint обнаружил, что проблема с контентом PowerPoint может попытаться восстановить презентацию».
Я хочу избавиться от этой ошибки. Я прочитал в Интернете, что решение - «UNBLOCK» powerpoint, которое можно сделать через раздел свойств файла. Мне интересно, есть ли что-то, что я могу сделать программно, чтобы подавить эти ошибки для моих пользователей. Это сообщение об ошибке раздражает как минимум.
Моя последняя нить на этом была удалена - https://stackoverflow.com/questions/41163148/how-to-unblock-pptx-using-apache-poi
Поэтому воссоздавать эту тему здесь снова. Ошибка также указана в bugzilla для POI apache. Идентификатор ошибки - 60633 (https://bz.apache.org/bugzilla/show_bug.cgi?id=60633).
XSLFTableCell cell
XSLFTextParagraph p
XSLFTextRun line
XSLFTable tbl = slide.createTable();
tbl.setAnchor(new Rectangle(X, Y, WIDTH, HEIGHT));
XSLFTableRow headerRow = tbl.addRow();
headerRow.setHeight(45);
//Loop through the data collection and populate rows and columns.
for(int i = 0; i < numberOfCols; i++) {
XSLFTableCell th = headerRow.addCell();
p = th.addNewTextParagraph();
p.setTextAlign(TextAlign.CENTER);
line = p.addNewTextRun();.....}
for (int item=0; item < 8; item++)
{
XSLFTableRow itemRow = tbl.addRow();.....}
//finally write the file
File pptFile = File.createTempFile("fileName", ".ppt")
FileOutputStream out = new FileOutputStream(pptFile)
ppt.write(out)
out.close()
Что изменилось с тех пор ваш последний вопрос был удален? Решение по удаленному вопросу заключается не в том, чтобы вслепую повторную публикацию ... – Gagravarr
Я не верю, что вы на правильном пути. Ошибка говорит, что код, который вы используете, делает что-то неправильно. И это даже объяснит это дальше, если вы посмотрите на шаги при ремонте. Поэтому сначала получите именно то, что нужно ремонтировать, наблюдая за процессом ремонта, а затем посмотрите на свой код, что может привести к этим проблемам. –
@Gagravarr Я не смог решить эту проблему, и я открыл ошибку с apache-poi и добавил подробности об ошибке с помощью этой темы. Я полностью понимаю, что «слепое» перераспределение не поможет. Однако, пожалуйста, будьте уверены, что это не так. Я перезапустил этот поток, так что 1. Кто-то, кто может определить, что я делаю неправильно, может помочь 2. Все, кто не знает решения, могут воспользоваться этим. – JavaProgrammer