Apache POI docx в pdf Исключение CTTblGrid.getGridColList, поскольку сетка имеет значение nullC#

Место общения программистов C#
Ответить
Anonymous
 Apache POI docx в pdf Исключение CTTblGrid.getGridColList, поскольку сетка имеет значение null

Сообщение Anonymous »

У нас есть предопределенный файл docx документа. Мы используем Java-программу Apache POI для преобразования docx в PDF.
Программа Java используется только для преобразования docx в PDF и ничего больше.
  • Java программа получает файл в виде потока байтов (base64 из облака Azure, работающего как приложение-функция)
  • Программа Java преобразует файл в поток байтов PDF
Упрощенный код Java:

Код: Выделить всё

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);
Когда программа C# запускается, она создает документ абсолютно нормально. Когда я открываю файл docx с помощью пользовательского интерфейса MS Word, я вижу таблицу с одной созданной ячейкой.
Проблема:
Однако теперь я загружаю этот новый файл 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»