JTextPane
Добавлено: 24 май 2006, 09:16
Привет!
Такая задача. На машине локально есть html-страница. Нужно отобразить ее на экране с последующей возможностью печати.
Для того чтобы отобразить я пробовал использовать JTextPane, а именно метод setPage. Отображается все как надо, но… в качестве параметра нужно посылать URL. Для того чтобы отобразить страницу "E:\article.htm" мне нужно посылать в качестве параметра "file://localhost/E:/article.htm".
В связи с этим хочу спросить. Как поступать, если известен только обычный путь ("E:\article.htm"), а иногда только относительный ("htm\article.htm").
Ну и про печать…
Вот код. Где-то нашел в примерах…
Это не то, что надо, но от этого решил отталкиваться…
Так вот… Пример рабочий, но
1) печатает исходник страницы, а не то что должно отображаться…
Думаю надо изменить строку
но на что изменить не знаю. Пробовал
ругается
2) Как сделать чтобы инфу для вывода брать непосредственно из JTextPane, а не с помощью FileInputStream.
3) ну и последнее, просто интересно… у меня на компе стоит Status Monitor. Все чтобы я не посылал на печать перехватывается этим монитором, можно посмотреть как будет выглядеть страница, отменить печать части страниц и т.д. Не было случая чтобы монитор, что-то пропустил. До сегодняшнего дня. Пример, который описан выше, сразу же начал печататься на принтере. Почему?
Заранее спасибо!
Такая задача. На машине локально есть html-страница. Нужно отобразить ее на экране с последующей возможностью печати.
Для того чтобы отобразить я пробовал использовать JTextPane, а именно метод setPage. Отображается все как надо, но… в качестве параметра нужно посылать URL. Для того чтобы отобразить страницу "E:\article.htm" мне нужно посылать в качестве параметра "file://localhost/E:/article.htm".
В связи с этим хочу спросить. Как поступать, если известен только обычный путь ("E:\article.htm"), а иногда только относительный ("htm\article.htm").
Ну и про печать…
Вот код. Где-то нашел в примерах…
Код: Выделить всё
if ("print".equals(e.getActionCommand())) {
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
PrintService pservices = PrintServiceLookup.lookupDefaultPrintService();
if (pservices!=null) {
System.out.println("selected printer " + pservices.getName());
DocPrintJob pj = pservices.createPrintJob();
try {
FileInputStream fis = new FileInputStream("E:\\article.htm");
Doc doc = new SimpleDoc(fis, flavor, null);
pj.print(doc, aset);
}
catch (IOException ie) {
System.err.println(ie);
}
catch (PrintException ex) {
System.err.println(ex);
}
}
}
Так вот… Пример рабочий, но
1) печатает исходник страницы, а не то что должно отображаться…
Думаю надо изменить строку
Код: Выделить всё
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
Код: Выделить всё
DocFlavor flavor = DocFlavor.INPUT_STREAM.TEXT_HTML_US_ASCII;
2) Как сделать чтобы инфу для вывода брать непосредственно из JTextPane, а не с помощью FileInputStream.
3) ну и последнее, просто интересно… у меня на компе стоит Status Monitor. Все чтобы я не посылал на печать перехватывается этим монитором, можно посмотреть как будет выглядеть страница, отменить печать части страниц и т.д. Не было случая чтобы монитор, что-то пропустил. До сегодняшнего дня. Пример, который описан выше, сразу же начал печататься на принтере. Почему?
Заранее спасибо!