Добрый день.
Столкнулся с такой проблемой, может кто-нибудь сможет помочь советом.
Jasperreports версия 3.0.1 генерирует rtf-отчет содержащий таблицы с текстом в ячейках таблиц (порядка 10 страниц). По особенностям кода jasperreport-а таблицы рисуются с помощью линий (каждая ячейка рисуется отдельными линиями), текст выводиться в текстовый регион, который создается в каждой ячейке таблицы.
При открытии сгенерированного отчета в 2007 ворде, последний падает с малоинформативным сообщением "обнаружена ошибка в winword.exe по такому-то смещению, приложение будет закрыто". Причем если открывать и закрывать один и тот же отчет много раз, то иногда он все-таки открывается без проблем — но какой-то закономерности выявить не удалось.
Так же если выводить в отчет только текст (без любой графики для отображения таблиц) то rtf-отчет открывается нормально. Так же если выводить только таблицы без текста то открывается тоже без падений. Но как только начинаешь выводить и текст и линии для рисования таблиц — начинаются странные падения ворда.
Также если руками (в любом текстовом редакторе) сократить сгенерированый отчет до одной страницы, то он нормально открывается в word 2007. Если за тем в открытом файле скопировать эту страницу и размножить ее еще на десять страниц (обычным копи-пастом), затем сохранить полученный файл, то при последующем его открытии опять происходят падения ворда.
Еще одна закономерность — чем больше файл в размере тем чаще ворд падает при его открытии. При достижении какого-то размера открыть файл без падения почти не удается.
Ошибка воспроизводиться только в 2007 ворде, Word 2003 и OpenOffice открывают rtf-отчет без всяких трудностей.
Погуглив в интернете нашел этот открытый дефект в Jasperreports
http://jasperforge.org/projects/jaspe...hp?id=3562
Но судя по переписке в той ветке — они сами мало представляют из-за чего происходят эти падения.
В связи с непостоянством воспроизведения ошибки и зависимостью к размеру файла, склоняюсь к мысли что где-то в ворде происходит какое-то переполнение или где-то плохая синхронизация потоков или он чтото не очищает после предыдущих падений или еще что-нибудь... во-общем пляшу с бубном )
Хотя если судить по лимитам в ворде
http://support.microsoft.com/kb/211489 превысить ничего вроде бы не должно было.
Может кто-то уже сталкивался с чем-нибудь подобным и решил как-то эту проблему, или знает какие-то особенности работы ворда с rtf при использовании большого количества линий и текстовых регионов, или у кого-нибудь будут идеи как можно локализовать проблему, а возможно ее и исправить? Буду рад любым мыслям по теме.
С уважением, Виктор.
P.S. модераторам rsdn.ru: трудно было решить в какую категорию форума задать этот вопрос, так что если посчитаете что этот вопрос лучше перенести в другую ветку форума — буду только за :)