Кто-нибудь действительно когда-нибудь читал файл .doc с POI и создавал с ним документ iText? - PullRequest
2 голосов
/ 11 августа 2009

Я видел, как люди говорили об этом в Интернете, мне посоветовали сделать это, но похоже, что механизм рендеринга iText далек от соответствия слову MS (openoffice, TeX). И интерпретировать .doc в любом случае далеко не тривиально (Дж. Спольски объяснил почему), поэтому я немного скептически отношусь.

Мне бы очень хотелось сделать это для проекта, но я ничего не могу найти в сети, я думаю, что самый простой способ - это модульность openoffice и захват системы ввода, системы разметки и системы вывода, оставляя пользовательский интерфейс на берегу. Но самое близкое, что я вижу в сети сейчас, - это подключение к работающему экземпляру OpenOffice / MS Office и отправка ему команд (читай .doc, сгенерировать PDF).

У вас есть какой-нибудь код в Интернете, чтобы показать эту мифическую цепочку [read .doc -> немного изменить в документе (добавить небольшую таблицу, заполнить пробелы) -> создать PDF]?

1 Ответ

2 голосов
/ 11 августа 2009

Я бы предположил, что это действительно только гипотетически возможно. То есть, это звучит так, как будто программное обеспечение должно делать это, но реальность сильно отличается. Поскольку вы правильно заявляете, что DOC и PDF - это очень разные форматы, и единственный способ создать точный перевод DOC в формате PDF в формате PDF - это распечатать его и записать вывод, как это делают многие создатели PDF.

POI и другое программное обеспечение, такое как Aspose.Words, позволит вам прочитать структуру DOC, а iText позволит вам создать PDF, но обязательно найдется миллион маленьких слабостей и крайних случаев в обоих, что означает, что любой реализация конвертера наверняка будет нетривиальной. Вдобавок ко всему, я могу сказать, что iText плохо поддерживает разбиение строк в таблицах. В проекте, над которым я работал, мы должны были визуализировать ячейки таблицы с разбивкой строк как своего рода «изображение вне экрана», а затем вставить изображение в одну ячейку таблицы. Достаточно приятный взлом в конце концов, но вам будет очень трудно воспроизвести некоторые из более богатых функций, которые поддерживает DOC, прежде чем вы даже начнете думать о встроенных объектах OLE, элементах управления ActiveX, автофигурах, языках справа налево, и т. д. И давайте не будем забывать, что каждая версия Word вводит новые функции в DOC и исправляет некоторые вещи, которые неправильны в старых версиях.

Для достаточно простых документов вы можете достичь разумного результата при небольших усилиях. Я никогда не делал этого, и я не хотел бы попробовать, потому что я знаю, что результаты будут посредственными, когда сложность исходного документа поднимется за пределы абзацев и заголовков. Что бы вы ни пытались сделать, я бы посоветовал вам сначала искать другой путь.

...