summaryrefslogtreecommitdiffstats
path: root/documentation/advanced/advanced-printing.asciidoc
diff options
context:
space:
mode:
authorIlia Motornyi <elmot@vaadin.com>2015-12-03 14:59:05 +0000
committerVaadin Code Review <review@vaadin.com>2015-12-03 14:59:12 +0000
commit2af72ba9636bec70046394c41744f89ce4572e35 (patch)
treeccb3dc2d2239585f8c3f79eb5f131ff61ca9ce86 /documentation/advanced/advanced-printing.asciidoc
parent8aa5fabe89f2967e966a64842a608eceaf80d08f (diff)
downloadvaadin-framework-2af72ba9636bec70046394c41744f89ce4572e35.tar.gz
vaadin-framework-2af72ba9636bec70046394c41744f89ce4572e35.zip
Revert "Merge branch 'documentation'"7.6.0.beta2
This reverts commit f6874bde3d945c8b2d1b5c17ab50e2d0f1f8ff00. Change-Id: I67ee1c30ba3e3bcc3c43a1dd2e73a822791514bf
Diffstat (limited to 'documentation/advanced/advanced-printing.asciidoc')
-rw-r--r--documentation/advanced/advanced-printing.asciidoc181
1 files changed, 0 insertions, 181 deletions
diff --git a/documentation/advanced/advanced-printing.asciidoc b/documentation/advanced/advanced-printing.asciidoc
deleted file mode 100644
index 9ed39eced1..0000000000
--- a/documentation/advanced/advanced-printing.asciidoc
+++ /dev/null
@@ -1,181 +0,0 @@
----
-title: Printing
-order: 6
-layout: page
----
-
-[[advanced.printing]]
-= Printing
-
-((("printing", id="term.advanced.printing", range="startofrange")))
-
-
-Vaadin does not have any special support for printing. There are two basic ways
-to print - in a printer controlled by the application server or by the user from
-the web browser. Printing in the application server is largely independent of
-the UI, you just have to take care that printing commands do not block server
-requests, possibly by running the print commands in another thread.
-
-((("[methodname]#print()#", id="term.advanced.printing.print",
-range="startofrange")))
-
-
-((("JavaScript", "[methodname]#print()#",
-id="term.advanced.printing.JavaScript.print",
-range="startofrange")))
-
-
-For client-side printing, most browsers support printing the web page. You can
-either print the current or a special print page that you open. The page can be
-styled for printing with special CSS rules, and you can hide unwanted elements.
-You can also print other than Vaadin UI content, such as HTML or PDF.
-
-[[advanced.printing.browserwindow]]
-== Printing the Browser Window
-
-Vaadin does not have special support for launching the printing in browser, but
-you can easily use the JavaScript [methodname]#print()# method that opens the
-print window of the browser.
-
-((("JavaScript", "[methodname]#execute()#")))
-
-[source, java]
-----
-Button print = new Button("Print This Page");
-print.addClickListener(new Button.ClickListener() {
- public void buttonClick(ClickEvent event) {
- // Print the current page
- JavaScript.getCurrent().execute("print();");
- }
-});
-----
-See the http://demo.vaadin.com/book-examples-vaadin7/book#advanced.printing.this[on-line example, window="_blank"].
-
-The button in the above example would print the current page, including the
-button itself. You can hide such elements in CSS, as well as otherwise style the
-page for printing. Style definitions for printing are defined inside a
-[literal]#++@media print {}++# block in CSS.
-
-
-[[advanced.printing.opening]]
-== Opening a Print Window
-
-You can open a browser window with a special UI for print content and
-automatically launch printing the content.
-
-
-[source, java]
-----
-public static class PrintUI extends UI {
- @Override
- protected void init(VaadinRequest request) {
- // Have some content to print
- setContent(new Label(
- "<h1>Here's some dynamic content</h1>\n" +
- "<p>This is to be printed.</p>",
- ContentMode.HTML));
-
- // Print automatically when the window opens
- JavaScript.getCurrent().execute(
- "setTimeout(function() {" +
- " print(); self.close();}, 0);");
- }
-}
-...
-
-// Create an opener extension
-BrowserWindowOpener opener =
- new BrowserWindowOpener(PrintUI.class);
-opener.setFeatures("height=200,width=400,resizable");
-
-// A button to open the printer-friendly page.
-Button print = new Button("Click to Print");
-opener.extend(print);
-----
-See the http://demo.vaadin.com/book-examples-vaadin7/book#advanced.printing.open[on-line example, window="_blank"].
-
-How the browser opens the window, as an actual (popup) window or just a tab,
-depends on the browser. After printing, we automatically close the window with
-JavaScript [methodname]#close()# call.
-
-(((range="endofrange", startref="term.advanced.printing.print")))
-(((range="endofrange", startref="term.advanced.printing.JavaScript.print")))
-
-[[advanced.printing.pdf]]
-== Printing PDF
-
-((("PDF")))
-To print content as PDF, you need to provide the downloadable content as a
-static or a dynamic resource, such as a [classname]#StreamResource#.
-
-You can let the user open the resource using a [classname]#Link# component, or
-some other component with a [classname]#PopupWindowOpener# extension. When such
-a link or opener is clicked, the browser opens the PDF in the browser, in an
-external viewer (such as Adobe Reader), or lets the user save the document.
-
-It is crucial to notice that clicking a [classname]#Link# or a
-[classname]#PopupWindowOpener# is a client-side operation. If you get the
-content of the dynamic PDF from the same UI state, you can not have the link or
-opener enabled, as then clicking it would not get the current UI content.
-Instead, you have to create the resource object before the link or opener are
-clicked. This usually requires a two-step operation, or having the print
-operation available in another view.
-
-
-[source, java]
-----
-// A user interface for a (trivial) data model from which
-// the PDF is generated.
-final TextField name = new TextField("Name");
-name.setValue("Slartibartfast");
-
-// This has to be clicked first to create the stream resource
-final Button ok = new Button("OK");
-
-// This actually opens the stream resource
-final Button print = new Button("Open PDF");
-print.setEnabled(false);
-
-ok.addClickListener(new ClickListener() {
- @Override
- public void buttonClick(ClickEvent event) {
- // Create the PDF source and pass the data model to it
- StreamSource source =
- new MyPdfSource((String) name.getValue());
-
- // Create the stream resource and give it a file name
- String filename = "pdf_printing_example.pdf";
- StreamResource resource =
- new StreamResource(source, filename);
-
- // These settings are not usually necessary. MIME type
- // is detected automatically from the file name, but
- // setting it explicitly may be necessary if the file
- // suffix is not ".pdf".
- resource.setMIMEType("application/pdf");
- resource.getStream().setParameter(
- "Content-Disposition",
- "attachment; filename="+filename);
-
- // Extend the print button with an opener
- // for the PDF resource
- BrowserWindowOpener opener =
- new BrowserWindowOpener(resource);
- opener.extend(print);
-
- name.setEnabled(false);
- ok.setEnabled(false);
- print.setEnabled(true);
- }
-});
-
-layout.addComponent(name);
-layout.addComponent(ok);
-layout.addComponent(print);
-----
-See the http://demo.vaadin.com/book-examples-vaadin7/book#advanced.printing.pdfgeneration[on-line example, window="_blank"].
-
-
-(((range="endofrange", startref="term.advanced.printing")))
-
-