Сохранить фрейм Java как документ Microsoft Word или PDF? - PullRequest
2 голосов
/ 29 октября 2009

Я работаю над биллинговой программой - прямо сейчас, когда вы нажимаете соответствующую кнопку, она генерирует фрейм, который показывает различные платежи и т. Д., В основном счет-фактуру. Есть ли способ дать пользователю возможность сохранить этот фрейм как документ: Microsoft Word , Microsoft Works или PDF ?

Ответы [ 5 ]

3 голосов
/ 29 октября 2009

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

BufferedImage myImage = new BufferedImage(size.width,size.height,
                            BufferedImage.TYPE_INT_RGB);

Graphics2D g2 = myImage.createGraphics();

myComponent.paint(g2);

затем вы можете сохранить это изображение и передать его в отчет о яшме. Из объекта JasperPrint вы можете затем сохранить в нескольких различных форматах, включая PDF. Лучшим, но похожим подходом является передача графического контекста в JasperReports (для этого есть средство визуализации, и качество намного лучше).

2 голосов
/ 29 октября 2009

Вместо создания текстового документа я бы предпочел использовать библиотеку Java, например iText , для создания документа PDF (более переносимого) или, что еще лучше, библиотеки отчетов JasperReport который может выводить отчеты в широком диапазоне форматов (PDF, XML, HTML, CSV, XLS, RTF, TXT), как предложено bigbrother82 в комментарии. Для меня это выглядит чище, чем использование изображения, особенно для печати (даже не упоминая, что ваш счет может быть многостраничным документом).

2 голосов
/ 29 октября 2009
  1. Краска JFrame в BufferedImage. paint() метод JFrame
  2. Сохранить изображение в формате jpg, png или в любом другом формате
  3. Возьмите библиотеку PDF и создайте пустой PDF (например, iText)
  4. Вставить изображение в документ PDF
  5. Сохранить - готово
0 голосов
/ 13 мая 2010

Возможно, вы захотите посмотреть онлайн-демонстрацию для Docmosis в качестве примера, который дает пользователю возможность запросить документ заранее. Эта демонстрация выполняет загрузку, но вместо этого она может направить документ в рамку и оставить его для просмотра в браузере. Этот стиль работы (как отмечалось другими) рассматривает проблему под другим углом и решает заранее, какой формат, а не после факта, а затем пытается сохранить содержимое кадра.

0 голосов
/ 29 октября 2009

Скорее всего, я бы посмотрел на это немного в ином направлении, и вместо того, чтобы спрашивать, как разделить форму GUI как есть, в PDF или документ Word, я бы спросил, как вставить этот контент в документ Word / PDF.

Ответ на этот вопрос Apache FOP . Создайте файл XSL-FO и попросите FOP преобразовать его в документ RTF (с расширением .DOC) или PDF.

Обычно это делается путем создания файла XML , содержащего данные, которые вам нужно распечатать. Затем используйте XSLT для преобразования этого XML в XSL-FO. Однако я обнаружил, что проще создать файл XSL-FO напрямую, используя язык шаблонов (например, Freemarker ).

...