Jeps - i før lige hele min kode:
***********************************
package CVR.Print;
import CVR.Lang.ILanguage;
import CVR.IO.Sheet;
import CVR.Events.MsgBox;
import CVR.Log.Logger;
import java.util.Date;
import java.awt.*;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.io.OutputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.File;
import java.text.SimpleDateFormat;
import java.text.Format;
import javax.swing.table.TableModel;
import org.jfree.report.*;
import org.jfree.report.function.*;
import org.jfree.report.style.FontDefinition;
import org.jfree.report.style.ElementStyleSheet;
import org.jfree.report.elementfactory.TextFieldElementFactory;
import org.jfree.report.elementfactory.LabelElementFactory;
import org.jfree.report.elementfactory.StaticShapeElementFactory;
import org.jfree.report.elementfactory.NumberFieldElementFactory;
import org.jfree.ui.FloatDimension;
import org.jfree.report.modules.output.pageable.pdf.PDFOutputTarget;
import org.jfree.report.modules.output.pageable.base.PageableReportProcessor;
public class PrinttoPdf extends Printer
{
//private Vector data;
private Point2D firmname = new Point2D.Float(0, 0);
private int firmnameMaxLength = 138;
private Point2D addres = new Point2D.Float(140, 0);
private int adressMaxLength = 113;
private Point2D zip = new Point2D.Float(255, 0);
private int zipMaxLength = 33;
private Point2D district = new Point2D.Float(290, 0);
private int disstrictMaxLength = 73;
private Point2D phone = new Point2D.Float(365, 0);
private int phoneMaxLength = 58;
private Point2D cvr = new Point2D.Float(410, 0);
private int cvrMaxLength = 58;
private String nullString = "?";
private TableModel model;
private JFreeReport report;
//private Sheet sheet;
private ILanguage language;
private String filename;
public PrinttoPdf(ILanguage language, String filename)
{
this.language = language;
this.filename = filename.endsWith(".pdf") ? filename : filename + ".pdf";
}
private PageHeader createPageHeader ()
{
final PageHeader header = new PageHeader();
header.getStyle().setStyleProperty(ElementStyleSheet.MINIMUMSIZE, new FloatDimension(0, 18));
header.getStyle().setFontDefinitionProperty(new FontDefinition("Serif", 10));
header.setDisplayOnFirstPage(true);
header.setDisplayOnLastPage(true);
header.addElement(StaticShapeElementFactory.createRectangleShapeElement(null, Color.black, null, new Rectangle2D.Float(0, 0, -100, -60), true, false));
header.addElement(StaticShapeElementFactory.createRectangleShapeElement(null, Color.decode("#AFAFAF"), null,new Rectangle2D.Float(0, 0, -100, -60),false, true));
LabelElementFactory factory = new LabelElementFactory();
factory.setAbsolutePosition(firmname);
factory.setMinimumSize(new FloatDimension(150, 12));
factory.setColor(Color.black);
factory.setHorizontalAlignment(ElementAlignment.LEFT);
factory.setVerticalAlignment(ElementAlignment.MIDDLE);
factory.setText(model.getColumnName(0));
header.addElement(factory.createElement());
factory = new LabelElementFactory();
factory.setAbsolutePosition(addres);
factory.setMinimumSize(new FloatDimension(150, 12));
factory.setColor(Color.black);
factory.setHorizontalAlignment(ElementAlignment.LEFT);
factory.setVerticalAlignment(ElementAlignment.MIDDLE);
factory.setText(model.getColumnName(1));
header.addElement(factory.createElement());
factory = new LabelElementFactory();
factory.setAbsolutePosition(zip);
factory.setMinimumSize(new FloatDimension(150, 12));
factory.setColor(Color.black);
factory.setHorizontalAlignment(ElementAlignment.LEFT);
factory.setVerticalAlignment(ElementAlignment.MIDDLE);
factory.setText(model.getColumnName(2));
header.addElement(factory.createElement());
factory = new LabelElementFactory();
factory.setAbsolutePosition(district);
factory.setMinimumSize(new FloatDimension(150, 12));
factory.setColor(Color.black);
factory.setHorizontalAlignment(ElementAlignment.LEFT);
factory.setVerticalAlignment(ElementAlignment.MIDDLE);
factory.setText(model.getColumnName(3));
header.addElement(factory.createElement());
factory = new LabelElementFactory();
factory.setAbsolutePosition(phone);
factory.setMinimumSize(new FloatDimension(150, 12));
factory.setColor(Color.black);
factory.setHorizontalAlignment(ElementAlignment.LEFT);
factory.setVerticalAlignment(ElementAlignment.MIDDLE);
factory.setText(model.getColumnName(4));
header.addElement(factory.createElement());
factory = new LabelElementFactory();
factory.setAbsolutePosition(cvr);
factory.setMinimumSize(new FloatDimension(150, 12));
factory.setColor(Color.black);
factory.setHorizontalAlignment(ElementAlignment.LEFT);
factory.setVerticalAlignment(ElementAlignment.MIDDLE);
factory.setText(model.getColumnName(5));
header.addElement(factory.createElement());
return header;
}
private PageFooter createPageFooter ()
{
final PageFooter pageFooter = new PageFooter();
pageFooter.getStyle().setStyleProperty(ElementStyleSheet.MINIMUMSIZE, new FloatDimension(0, 30));
pageFooter.getStyle().setFontDefinitionProperty(new FontDefinition("Dialog", 10));
pageFooter.addElement(StaticShapeElementFactory.createRectangleShapeElement(null, Color.decode("#AFAFAF"), null,new Rectangle2D.Float(0, 0, -100, -60),false, true));
pageFooter.addElement(StaticShapeElementFactory.createRectangleShapeElement(null, Color.black, null, new Rectangle2D.Float(0, 0, -100, -60), true, false));
LabelElementFactory factory = new LabelElementFactory();
factory.setAbsolutePosition(new Point2D.Float(5, 5));
factory.setMinimumSize(new FloatDimension(-100, 0));
factory.setHorizontalAlignment(ElementAlignment.RIGHT);
factory.setVerticalAlignment(ElementAlignment.BOTTOM);
factory.setDynamicHeight(Boolean.TRUE);
factory.setText(getDescription());
pageFooter.addElement(factory.createElement());
factory = new LabelElementFactory();
Format formatter = new SimpleDateFormat("dd MMMM yyyy HH:mm:ss");
factory.setAbsolutePosition(new Point2D.Float(0, 5));
factory.setMinimumSize(new FloatDimension(-100, 0));
factory.setHorizontalAlignment(ElementAlignment.CENTER);
factory.setVerticalAlignment(ElementAlignment.BOTTOM);
factory.setDynamicHeight(Boolean.TRUE);
factory.setText(formatter.format(new Date()));
pageFooter.addElement(factory.createElement());
PageFunction pf = new PageFunction("PAGE_NUMBER");
PageTotalFunction ptf = new PageTotalFunction();
TextFormatExpression pageNofM = new TextFormatExpression();
pageNofM.setName("PAGE_N_OF_M");
pageNofM.setPattern("Page {0}/{1}");
pageNofM.setField(0, "PAGE_NUMBER");
pageNofM.setField(1, "TOTAL_PAGES");
ptf.setName("TOTAL_PAGES");
report.addExpression(pf);
report.addExpression(ptf);
report.addExpression(pageNofM);
TextFieldElementFactory tff = new TextFieldElementFactory();
tff.setName("PageIndicator");
tff.setMinimumSize(new FloatDimension(60.0f, 15.0f));
tff.setHorizontalAlignment(ElementAlignment.LEFT);
tff.setVerticalAlignment(ElementAlignment.BOTTOM);
tff.setFieldname("PAGE_N_OF_M");
pageFooter.addElement(tff.createElement());
return pageFooter;
}
private JFreeReport createReportDefinition ()
{
JFreeReportBoot.getInstance().start();
JFreeReport report = new JFreeReport();
report.setName(filename);
TextFieldElementFactory factory = new TextFieldElementFactory();
factory.setAbsolutePosition(this.firmname);
factory.setMinimumSize(new FloatDimension(150, 12));
factory.setColor(Color.black);
factory.setHorizontalAlignment(ElementAlignment.LEFT);
factory.setVerticalAlignment(ElementAlignment.MIDDLE);
factory.setNullString(nullString);
factory.setFieldname(model.getColumnName(0));
factory.setMaximumSize(new FloatDimension(this.firmnameMaxLength, 12));
report.getItemBand().addElement(factory.createElement());
factory = new TextFieldElementFactory();
factory.setAbsolutePosition(this.addres);
factory.setMinimumSize(new FloatDimension(150, 12));
factory.setColor(Color.black);
factory.setHorizontalAlignment(ElementAlignment.LEFT);
factory.setVerticalAlignment(ElementAlignment.MIDDLE);
factory.setNullString(nullString);
factory.setFieldname(model.getColumnName(1));
factory.setMaximumSize(new FloatDimension(this.adressMaxLength, 12));
report.getItemBand().addElement(factory.createElement());
factory = new TextFieldElementFactory();
factory.setAbsolutePosition(this.zip);
factory.setMinimumSize(new FloatDimension(150, 12));
factory.setColor(Color.black);
factory.setHorizontalAlignment(ElementAlignment.LEFT);
factory.setVerticalAlignment(ElementAlignment.MIDDLE);
factory.setNullString(nullString);
factory.setFieldname(model.getColumnName(2));
factory.setMaximumSize(new FloatDimension(this.zipMaxLength, 12));
report.getItemBand().addElement(factory.createElement());
factory = new TextFieldElementFactory();
factory.setAbsolutePosition(this.district);
factory.setMinimumSize(new FloatDimension(150, 12));
factory.setColor(Color.black);
factory.setHorizontalAlignment(ElementAlignment.LEFT);
factory.setVerticalAlignment(ElementAlignment.MIDDLE);
factory.setNullString(nullString);
factory.setFieldname(model.getColumnName(3));
factory.setMaximumSize(new FloatDimension(this.disstrictMaxLength, 12));
report.getItemBand().addElement(factory.createElement());
factory = new TextFieldElementFactory();
factory.setAbsolutePosition(this.phone);
factory.setMinimumSize(new FloatDimension(150, 12));
factory.setColor(Color.black);
factory.setHorizontalAlignment(ElementAlignment.LEFT);
factory.setVerticalAlignment(ElementAlignment.MIDDLE);
factory.setNullString(nullString);
factory.setFieldname(model.getColumnName(4));
factory.setMaximumSize(new FloatDimension(this.phoneMaxLength, 12));
report.getItemBand().addElement(factory.createElement());
factory = new TextFieldElementFactory();
factory.setAbsolutePosition(this.cvr);
factory.setMinimumSize(new FloatDimension(150, 12));
factory.setColor(Color.black);
factory.setHorizontalAlignment(ElementAlignment.LEFT);
factory.setVerticalAlignment(ElementAlignment.MIDDLE);
factory.setNullString(nullString);
factory.setFieldname(model.getColumnName(5));
factory.setMaximumSize(new FloatDimension(this.cvrMaxLength, 12));
report.getItemBand().addElement(factory.createElement());
return report;
}
public String getDescription ()
{
String temp = Sheet.instance().getFilename();
if(!temp.endsWith(".xls"))
{
String file[] = temp.split("\\.");
return file[0]+".xls";
}
else
return temp;
}
public void Print()
{
report = createReportDefinition();
report.setData(model);
report.setPageFooter(this.createPageFooter());
report.setPageHeader(this.createPageHeader());
savePDF(report);
}
public TableModel getdata()
{
model = Sheet.instance().getModel();
return model;
}
public boolean savePDF (final JFreeReport report)
{
OutputStream out = null;
try
{
out = new BufferedOutputStream(new FileOutputStream(new File(filename)));
final PDFOutputTarget target = new PDFOutputTarget(out);
target.configure(report.getReportConfiguration());
target.open();
final PageableReportProcessor proc = new PageableReportProcessor(report);
proc.setOutputTarget(target);
proc.processReport();
target.close();
return true;
}
catch (Exception e)
{
new MsgBox(language.getText("error"),language.getText("fileopen"),false);
Logger.Log(e,Logger.WRITE);
return false;
}
finally
{
try
{
if (out != null)
{
out.close();
}
}
catch (Exception e)
{
Logger.Log(e,Logger.WRITE);
}
}
}
}
*********************