|
|
|
Вытащить содержимое страницы HTML при печати в ПДФ
|
|||
|---|---|---|---|
|
#18+
Друзья, пожалуйста, помогите и не сильно ругайте. Я новичок, реально намучалась уже с одной задачей, и даже не знаю точно, в какую сторону стоит копать, есть несколько вариантов, все испробованы и пока упираются в тупик. Задача. Есть контент менеджмент система. В ней страница с типа как списком (архивом) аннотаций к различным статьям. Под каждой аннотацией линк на саму статью. И вот моя задача - сформировать ПДФ из этой страницы архива НО (!) так, чтоб после самого архива шли еще и сами статьи. Т.е моя задача пройтись по всем ссылкам, выцепить статью и добавить к концу ПДФ файла. Загвоздка именно в получении ПДФ, так как на экране искомый вид страницы сделать удается. а ПДФ - нет, и вот почему: Страница самого архива - это отдельный шаблон, который генерится на страницу "архив.jsp", которая, в свою очередь и шлется на печать в ПДФ следующим образом: Код: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Далее все немножко сложнее. Шаблон архива на самом деле включает подшаблоны самих статей, которые генерятся "внутри". Так вот, для генерации шаблонов статей также каждый раз используется request.getRequestDispatcher(*...*).forward Слегка Smile подебажившись, я поняла, что в результате этих форвардов теряется содержимое request и response. Вследствие этого ПДФ пытается напечатать только последнюю статью. Испробованные мною варианты. 1) Влезть в момент создания ПДФ из стринг буффера, выбрать оттуда ссылки, вытащить по ним страницу HTML со статьей и каким то образом прицепить к ПДФ. проблемы а) если я пытаюсь просто прочитать HTML страницу, там, естественно, теряются стили, т.к я вытаскиваю только неразвернутые линки на СSS файлы, но никак не сами стили. Ок, я пробовала вытащить оттуда саму статью, голый HTML , это удается, но тогда его нужно впихнуть внутрь генерируемого ДОМ документа, внуть всех контейнеров типа "боди" и прочее. Вставка не работает, крешатся парсеры т.к полученный HTML статьи не является правильным ХМL документом б) Даже если мне удастся получить HTML статьи со стилями, то как потом его прицепить к существующему документу, чтоб эти стили не потерялись? 2) Второй вариант, который я думала, это никуда в саму генерацию ПДФ не вмешиваться, а просто каким то образом сохранять и восстанавливать объекты request и response при вызове рендерера каждой из статей. Тут проблема одна (пока одна). Я по неопытности просто имею очень смутное представление как это сделать. Читаю про сериализацию объектов, но пока не знаю, удастся ли мне сериализовать правильно такие ответственные объекты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 13:57:18 |
|
||
|
Вытащить содержимое страницы HTML при печати в ПДФ
|
|||
|---|---|---|---|
|
#18+
Извините, если задача слишком обширная. Пока можно упростить. Как прочитать под-страницу страницу по ссылке так, чтоб при этом сохранились все стили? Если я читаю страницу таким образом, я, естественно, теряю все те вещи, которые броузер сам рендерит типа стилей, некоторых джаваскриптов и тп. URLConnection conn = url.openConnection(); in = new BufferedReader( new InputStreamReader( url.openStream())); StringBuffer sBuf = new StringBuffer(); String str; while ((str = in.readLine()) != null) sBuf.append(str); return sBuf.toString(); Пожалуйста, подскажите хотя бы в сторону чего смотреть и в сторону чего копать . Спасибо еще раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 14:57:07 |
|
||
|
Вытащить содержимое страницы HTML при печати в ПДФ
|
|||
|---|---|---|---|
|
#18+
Второй подвопрос - можно ли сериализовать реквест -респонс и как это правильно сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 15:10:11 |
|
||
|
Вытащить содержимое страницы HTML при печати в ПДФ
|
|||
|---|---|---|---|
|
#18+
s-dme, я лично не понял, кто и как печатает\генерит\в респонс pdf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:00:00 |
|
||
|
Вытащить содержимое страницы HTML при печати в ПДФ
|
|||
|---|---|---|---|
|
#18+
Petro123, Я действительно слишком сложно объяснила, постараюсь упростить. И еще раз простите, если пишу глупости, я новичок. Есть jsp страница "архив.jsp", которая отправляется на печать в ПДФ следующим образом. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. // Сам ПДФ генерится с помощью ITextRenderer [/SRC] Проблема в том, что внутри этой страницы есть скриплеты, которые вызывают методы подгрузки других страниц, и вот эти методы тоже используют аналогичный кусок кода, для получения других страниц. После каждого из этих скриплетов содержимое response и request меняется. И в итоге на печати у меня только результат *последнего* подгруженного фрагмента страницы, но никак не вся страница. Что делать и как получить ПДФ (возможно, другими путями) я не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2012, 16:45:36 |
|
||
|
Вытащить содержимое страницы HTML при печати в ПДФ
|
|||
|---|---|---|---|
|
#18+
Все. Основную задачу уже решила самостоятельно, все-таки влезла в метод генерации ПДФ и вызываю сервлеты для получения подстраниц, далее тупо мержу ПДФ средствами рендерера. Кривовато, наверное, но другого способа я не нашла. Осталась последняя проблема, ПДФ рендерер ITextRenderer не может прочить в странице линки на стили и загрузить файлы стилей, хотя, по идее, должен был бы? Вроде бы все пути правильные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2012, 17:43:52 |
|
||
|
Вытащить содержимое страницы HTML при печати в ПДФ
|
|||
|---|---|---|---|
|
#18+
Пожалуй, завершу свой монолог. :) Решила я и задачу с отображениями стилей в ITextRenderer . Похоже, ему нужен был абсолютный путь, а не относительный, пришлось трансформировать путь уже на ходу, заменяя с помощью Матчера и регулярных выражений (чувствую, что это тоже криво.. но опять таки, это все что я надумала). Эх, гуру джавы, я понимаю, новичок задает глупые вопросы, но может ему можно просто сказать хотя бы что сам вопрос глупый? мы ведь не всегда можем сами догадаться даже об этом ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2012, 23:49:43 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37693733&tid=2132377]: |
0ms |
get settings: |
12ms |
get forum list: |
21ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
47ms |
get topic data: |
16ms |
get forum data: |
4ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 316ms |
| total: | 496ms |

| 0 / 0 |
