Печать виджета gwt

Может кто-нибудь подскажет, как распечатать виджет gwt?

Я прошел через следующую ветку и попробовал.

http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/eea48bafbe8eed63

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


person DonX    schedule 05.11.2009    source источник
comment
почему ты хочешь сделать это? Возможно, есть еще один способ добиться того, что вам нужно   -  person sinelaw    schedule 14.01.2011
comment
@ sinelaw - Я не могу ответить на ваш первый вопрос. Это зависит от требований моего проекта. Лучше, пожалуйста, опубликуйте свой альтернативный способ решения этой проблемы.   -  person DonX    schedule 17.01.2011
comment
Пример из групп Google действительно хорош. Я советую вам использовать media = print, если вы хотите распечатать картинки. Но не забывайте, что во многих браузерах по умолчанию есть опция, отключающая печать фонового изображения (например, в firefox: Файл ›Настройки страницы› Параметры ›Печатать фон (цвет и изображения)). Невозможно отменить эту опцию с помощью хитрого css или чего-то еще ...   -  person Naoj    schedule 10.02.2011


Ответы (2)


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

Решение, которое я обнаружил, заключается в том, что вам нужна некоторая задержка перед вызовом Print.

Итак, есть несколько альтернативных решений. 1. Запишите петлю, вызывающую задержку на 2-3 секунды. 2. Используйте Time, чтобы получить задержку в 2–3 секунды. 3. Используйте Window.Confirm, чтобы задать вопрос вроде «Вы хотите напечатать?»

Надеюсь, это поможет другим

person Hardik Mishra    schedule 13.10.2011

Вы можете создать свой собственный класс и, нажав кнопку «Печать» в своем приложении, используя собственный метод печати, вы можете вызвать Window.Print ().

Для этой цели можно использовать GWT UIObject и метод, и он будет преобразован в строку.

public class NTPrint {
    /**
     * If true, use a Timer instead to print the internal frame
     */
    public static boolean USE_TIMER = true;

    /**
     * Time in seconds to wait before printing the internal frame when using Timer
     */
    public static int TIMER_DELAY = 1;

    public static native void it() /*-{ 
        $wnd.print(); 
    }-*/; 

    public static void it(String html) {
        try{
            buildFrame(html);
            if (USE_TIMER) {
                Timer timer = new Timer() {
                    public void run() {
                        printFrame();
                    }
                };
                timer.schedule(TIMER_DELAY * 1000);
            } else {
                printFrame();
            }
        }
        catch (Throwable exc) {
            CommonUtil.printStackTrace(exc);
            Window.alert(exc.getMessage());
        }
    }

    /**
     * This method will be called when you pass Widget without style.
     * @param uiObjects
     */
    public static void it( UIObject...uiObjects) { 
        StringBuffer objString= new StringBuffer();
        for(UIObject obj: uiObjects)
                objString.append(obj.toString());
            it("", objString.toString()); 
    } 

}

При нажатии кнопки "Печать"

  /**
         * prints all forms
         * @param documentInfo
         */
        public static void printForms(List<FormTransaction> formTransactions, String documentInfo, List<CellTransaction> cellTransactionList, boolean isComment, Document document) {
                String style = "<link rel='styleSheet' type='text/css' href='v4workflow/css/style.css'>"
                                + "<link rel='styleSheet' type='text/css' href='v4workflow/css/gwtcontrols.css'>"
                                + "<style type='text/css' media='print'>"
                                + "@media print {"
                                + ".footerText{font-size:13px; font-weight:normal;margin-top:0px;}"
                                + ".break {page-break-after:always}"
                                + "}" + "</style>";
                List<UIObject> uiObjects = new ArrayList<UIObject>();
                NTPrintLayout printLayout = new NTPrintLayout();
                printLayout.setSelectedDocument(null);
                uiObjects.add(createHeader());
                NTPrint.it(style,uiObjects);
        }

 public static FlexTable createHeader(){
                FlexTable flexTable = new FlexTable();
                flexTable.setWidth("100%");
                return flexTable;
        }
person PVR    schedule 19.03.2013