Программа Java используется только для преобразования docx в PDF и ничего больше.
- Java программа получает файл в виде потока байтов (base64 из облака Azure, работающего как приложение-функция)
- Программа Java преобразует файл в поток байтов PDF
Код: Выделить всё
InputStream instrm = new ByteArrayInputStream(decodedBytes);
ByteArrayOutputStream outstrm = new ByteArrayOutputStream();
XWPFDocument document = new XWPFDocument(instrm);
PdfOptions options = PdfOptions.create();
PdfConverter.getInstance().convert(instrm, outstrm, options);
//outstrm is the one that is n output from the java component
Нам нужно было программно добавить еще одну таблицу в документ. Другая группа добавила новую таблицу с помощью пакета C# DocumentFormat.OpenXml.
Упрощенный код C# (снова выполняется как приложение-функция Azure):
Код: Выделить всё
using DocumentFormat.OpenXml.Wordprocessing;
var outputStream = new MemoryStream(Convert.FromBase64String(prependBase64String));
Table table = new Table();
var tr = new TableRow();
TableCell tc = new TableCell(new Paragraph(new Run(new Text("SimpleText"))));
tr.Append(tc);
table.Append(tr);
Проблема:
Однако теперь я загружаю этот новый файл docx с динамически созданной новой таблицей в моей программе Java выдает исключение: «Сетка CTTblGrid.getGridColList имеет значение null». Полное исключение гласит: fr.opensagres.poi.xwpf.converter.core.XWPFConverterException: java.lang.NullPointerException: невозможно вызвать «org. openxmlformats.schemas.wordprocessingml.x2006.main.CTTblGrid.getGridColList()», потому что «сетка» имеет значение null
Здесь следует отметить: если я открою этот документ Word и выдаю команду «Сохранить как " ничего не меняя, и передать этот файловый документ в мой компонент Java, Java действительно преобразует этот документ, включая динамическую таблицу, в формат PDF.
Что-то, что Word делает во время операции сохранения, " исправить" что-то в этой сгенерированной программным способом таблице.
Подробнее здесь: https://stackoverflow.com/questions/791 ... id-is-null
Мобильная версия