Export to PDF"
Line 74: | Line 74: | ||
## there are three library properties to be used | ## there are three library properties to be used | ||
− | This is the location to export server. When it doesn't find this definition, JFreechart will be used to generate chart graph. ( | + | This is the location to export server. When it doesn't find this definition, JFreechart will be used to generate chart graph. (Required) |
<source lang="xml" > | <source lang="xml" > | ||
<library-property> | <library-property> |
Revision as of 03:36, 26 November 2014
PDF Exporter
Available in ZK Spreadsheet EE only
In addition to the Excel format, you can also export a book model as a PDF file with Exporter
Example to export as a PDF
package org.zkoss.zss.essential;
import java.io.*;
import org.zkoss.util.media.AMedia;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.*;
import org.zkoss.zss.api.*;
import org.zkoss.zss.api.model.Book;
import org.zkoss.zss.ui.Spreadsheet;
import org.zkoss.zul.*;
public class ExportPdfComposer extends SelectorComposer<Component> {
@Wire
private Spreadsheet ss;
@Wire("combobox")
private Combobox combobox;
Exporter exporter = Exporters.getExporter("pdf");
@Listen("onClick = #exportPdf")
public void doExport() throws IOException{
Book book = ss.getBook();
File file = File.createTempFile(Long.toString(System.currentTimeMillis()),"temp");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
exporter.export(book, file);
}finally{
if(fos!=null){
fos.close();
}
}
Filedownload.save(new AMedia(book.getBookName()+".pdf", "pdf", "application/pdf", file, true));
}
//omit some code for brevity
}
Line 21: Get an Exporter instance for PDF format.
Export Server Setup
Since 3.6.1
Since 3.6.1, the default chart engine has become ZK Charts. With this engine, exporting spreadsheet including charts to PDF needs extra export server chart data rendering at server side. The easiest way is adopting Highcharts official solution which is based on PhantomJS, a headless Webkit browser.
- download and install PhantomJS at http://phantomjs.org/download.html
- download Highcharts project.
- in this project, go to exporting-server -> phantomjs
- start export server "phantomjs highcharts-convert.js -host 127.0.0.1 -port 3003"
- you can customize host and port respectively by parameter -host and -port
- add properties into zk.xml
- there are three library properties to be used
This is the location to export server. When it doesn't find this definition, JFreechart will be used to generate chart graph. (Required)
<library-property>
<name>org.zkoss.zss.chart.render.server.url</name>
<value>http://127.0.0.1:3003</value>
</library-property>
Scale is a zoom factor that affect pixel density than original. 2 means double resolution than original. (Optional)
<library-property>
<name>org.zkoss.zss.chart.render.server.scale</name>
<value>1</value>
</library-property>
Default timeout is 10000 milliseconds (10 seconds) for waiting response from export server. (Optional)
<library-property>
<name>org.zkoss.zss.chart.render.server.timeout</name>
<value>10000</value>
</library-property>
After restarting server, you will see the ZK Charts based chart when exporting PDF.
Load Excel Printing Setup
Since 3.6.0
Spreadsheet exports its book model to a PDF file according to the page print setup you specify in Excel.
For example you can add header and footer, and it would look like:
You can also scale a sheet to fit into one page with row and column heading:
Supported Page Setup
The page setup properties of Excel which are supported by Spreadsheet are listed below:
Page
- Orientation
- Portrait, Landscape
- Scaling
- Adjust to % normal size
- Fit to pages wide by tall
- Page size
- First page number
Margins
- Top
- Header
- Right
- Footer
- Bottom
- Left
Center on Page
- Horizontally
- Vertically
Header/Footer
- Custom Header...
- Custom Footer...
- Different odd and even pages
- Different first page
Sheet
- Print area
- Print titles
- Rows to repeat at top
- Columns to repeat at left
- Print
- Gridlines
- Row and column headings
- Page order
- Down, then over
- Over, then down
All source code listed in this book is at Github.