📄 pdfview.java
字号:
/* * Copyright 2004 original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.extremecomponents.table.view;import java.util.Iterator;import java.util.List;import org.extremecomponents.table.bean.Column;import org.extremecomponents.table.bean.Export;import org.extremecomponents.table.core.BaseModel;/** * @author jeff johnston */public class PdfView implements View { private StringBuffer xlsfo = new StringBuffer(); public final static String HEADER_BACKGROUND_COLOR = "headerBackgroundColor"; public final static String HEADER_TITLE = "headerTitle"; public final static String HEADER_COLOR = "headerColor"; public PdfView() { } public void beforeBody(BaseModel model) { xlsfo.append(startRoot()); xlsfo.append(regionBefore(model)); xlsfo.append(regionAfter()); xlsfo.append(columnDefinitions(model)); xlsfo.append(header(model)); xlsfo.append(" <fo:table-body> "); } public void body(BaseModel model, Column column) { if (column.isFirstColumn()) { xlsfo.append(" <fo:table-row> "); } String value = ExportViewUtils.parsePDF(column.getPropertyValueAsString()); xlsfo.append(" <fo:table-cell border=\"solid silver .5px\" display-align=\"center\" padding=\"3pt\"> "); xlsfo.append(" <fo:block>" + value + "</fo:block> "); xlsfo.append(" </fo:table-cell> "); if (column.isLastColumn()) { xlsfo.append(" </fo:table-row> "); } } public Object afterBody(BaseModel model) { xlsfo.append(" </fo:table-body> "); xlsfo.append(endRoot()); return xlsfo.toString(); } public String startRoot() { StringBuffer sb = new StringBuffer(); sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); sb.append("<fo:root xmlns:fo=\"http://www.w3.org/1999/XSL/Format\">"); sb.append(" <fo:layout-master-set> "); sb.append(" <fo:simple-page-master master-name=\"simple\" "); sb.append(" page-height=\"8.5in\" "); sb.append(" page-width=\"11in\" "); sb.append(" margin-top=\".5in\" "); sb.append(" margin-bottom=\".25in\" "); sb.append(" margin-left=\".5in\" "); sb.append(" margin-right=\".5in\"> "); sb.append(" <fo:region-body margin-top=\".5in\" margin-bottom=\".25in\"/> "); sb.append(" <fo:region-before extent=\".5in\"/> "); sb.append(" <fo:region-after extent=\".25in\"/> "); sb.append(" </fo:simple-page-master> "); sb.append(" </fo:layout-master-set> "); sb.append(" <fo:page-sequence master-reference=\"simple\" initial-page-number=\"1\"> "); return sb.toString(); } public String regionBefore(BaseModel model) { StringBuffer sb = new StringBuffer(); Export export = model.getExportHandler().getCurrentExport(); String headerBackgroundColor = export.getAttributeAsString(HEADER_BACKGROUND_COLOR); sb.append(" <fo:static-content flow-name=\"xsl-region-before\"> "); String title = export.getAttributeAsString(HEADER_TITLE); sb.append(" <fo:block space-after.optimum=\"15pt\" color=\"" + headerBackgroundColor + "\" font-size=\"17pt\" font-family=\"'Times'\">" + title + "</fo:block> "); sb.append(" </fo:static-content> "); return sb.toString(); } public String regionAfter() { StringBuffer sb = new StringBuffer(); sb.append(" <fo:static-content flow-name=\"xsl-region-after\" display-align=\"after\"> "); sb.append(" <fo:block text-align=\"end\">Page <fo:page-number/></fo:block> "); sb.append(" </fo:static-content> "); return sb.toString(); } public String columnDefinitions(BaseModel model) { StringBuffer sb = new StringBuffer(); sb.append(" <fo:flow flow-name=\"xsl-region-body\"> "); sb.append(" <fo:block> "); sb.append(" <fo:table table-layout=\"fixed\" font-size=\"10pt\"> "); double columnCount = model.getColumnHandler().columnCount(); double colwidth = 10 / columnCount; for (int i = 1; i <= columnCount; i++) { sb.append(" <fo:table-column column-number=\"" + i + "\" column-width=\"" + colwidth + "in\"/> "); } return sb.toString(); } public String header(BaseModel model) { StringBuffer sb = new StringBuffer(); Export export = model.getExportHandler().getCurrentExport(); String headerColor = export.getAttributeAsString(HEADER_COLOR); String headerBackgroundColor = export.getAttributeAsString(HEADER_BACKGROUND_COLOR); sb.append(" <fo:table-header background-color=\"" + headerBackgroundColor + "\" color=\"" + headerColor + "\"> "); sb.append(" <fo:table-row> "); List columns = model.getColumnHandler().getHeaderColumns(); for (Iterator iter = columns.iterator(); iter.hasNext();) { Column column = (Column) iter.next(); String title = column.getValue().toString(); sb .append(" <fo:table-cell border=\"solid silver .5px\" text-align=\"center\" display-align=\"center\" padding=\"3pt\"> "); sb.append(" <fo:block>" + title + "</fo:block> "); sb.append(" </fo:table-cell> "); } sb.append(" </fo:table-row> "); sb.append(" </fo:table-header> "); return sb.toString(); } public String endRoot() { StringBuffer sb = new StringBuffer(); sb.append(" </fo:table> "); sb.append(" </fo:block> "); sb.append(" </fo:flow> "); sb.append(" </fo:page-sequence> "); sb.append(" </fo:root> "); return sb.toString(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -