# PDF erstellen



## zácky (23. Januar 2008)

Hallo Leute,
ich habe da eine kleine Frage ... "Warum funktioniert es nicht ?" 
Es geht darum das ich eine PDF Datei erstellen möchte und dies über eine *.rptdesign Datei (BIRT) abwickeln möchte ... soweit funktioniert es auch einwandfrei. Nun würde ich dies aber über ein externes Programm laufen lassen, also meine Class-Datei einbinden in einen anderen Prozess, so das dann meine *.rptdesing Datei von birt ausgelesen und dann daraus resultierend eine PDF - Datei entsteht.
Ich denke der Code ist ok ... sollte funktionieren. Beim Compilen aber, kommt nur ein kleiner Warnig ... (ich compile mit javac ... kenne nix anderes )


```
Note: Finale.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
```

wenn aber nun ich meine entstandene Class Datei in mein Programmchen einbinde funktioniert es nicht ... bzw. der Process läuft nur durch, ohne eine Fehler Meldung. Ebenso entsteht auch keine PDF Datei.
Das skurille ist, das ich andere Programme eingebunden habe, die mir eine csv oder excel oder word Datei erstellen mit dementsprechenden Inhalt. Nur PDF´s wollen einfach nicht wirklich. 
Ich denke es könnte doch irgend was an dem Source liegen ... tendenziell an dem Punkt "HashMap" ... da ich diese Funktion nur bei den PDF´s benutze.

Hier mein SourceCode:


```
package Finale;

//import java.text.SimpleDateFormat;
import ivyteam.cs.webapp.pi.IvyObject;
import ivyteam.cs.webapp.pi.OuterProcessBean;

import java.util.HashMap;

import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.EngineConstants;
import org.eclipse.birt.report.engine.api.EngineException;
import org.eclipse.birt.report.engine.api.IReportRunnable;
import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
import org.eclipse.birt.report.engine.api.RenderOption;
import org.eclipse.birt.report.engine.api.ReportEngine;

public class Finale implements OuterProcessBean{
	


	public Finale(){
		super();
	}


	public void abort(IvyObject arg0) {
		// TODO Auto-generated method stubdir
		
		
	}


	public void abort() {
		// TODO Auto-generated method stub
		
	}


	public void perform(IvyObject arg0) throws Exception, EngineException {
		try{
//			Date date = new Date();
//			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH-mm");
		
			EngineConfig config = new EngineConfig();
			config.setEngineHome("C:/eclipse2/eclipse/plugins");
			
			ReportEngine engine = new ReportEngine(config);
			
			IReportRunnable design = engine.openReportDesign("C:/eclipse2/eclipse/workspace/MyReports/Chart2.rptdesign");
			IRunAndRenderTask task = engine.createRunAndRenderTask(design);
			RenderOption renderContext = new RenderOption();
			
			HashMap contextMap = new HashMap();
			contextMap.put(EngineConstants.APPCONTEXT_PDF_RENDER_CONTEXT, renderContext);
			task.setAppContext(contextMap);
			
			RenderOption options = new RenderOption();
			options.setOutputFileName("C:/test/Test.pdf");
			options.setOutputFormat("pdf");
			task.setRenderOption(options);
			task.run();
			engine.destroy();
			
			
			
			
		}catch (Exception e){
			e.printStackTrace();
		}
		
	}


	public void reset() throws Exception {
		// TODO Auto-generated method stub
		
	}


	public void setConfiguration(String configuration) {
		
		
	}


	public void start() throws Exception {
		// TODO Auto-generated method stub
		
	}


	public void stop() throws Exception {
		// TODO Auto-generated method stub
		
	}
	
}
```

hm ... ich weis nicht mehr weiter ... ka woran es liegt ... wenn aber einer eine Idee oder einen Tipp hat ... dann wäre ich sehr glücklich


----------



## zeja (23. Januar 2008)

Dann schau doch mal bei den Methoden die du benutzt was dort als deprecated markiert ist. Eine Entwicklungsumgebung würde dir das z.B. direkt anzeigen.


----------



## zácky (24. Januar 2008)

Nun, unter Eclipse wird nicht wirklich was angezeigt, bis auf das er einwenig Probleme mit der HashMap hat ... aber mit deprecation hat das ja nix zutun ...
Wenn ich aber das eingebe ...

```
C:\eclipse2\eclipse\workspace\BirtIvy\Finale>javac -deprecation Finale.java
Finale.java:33: warning: [deprecation] abort() in ivyteam.cs.webapp.pi.OuterProcessBean has been deprecated
        public void abort() {
                    ^
1 warning
```

... dann bekomm ich das raus ... und nun stehe ich voll auf dem schlauch , klar ich habe 2 Methoden von abort, wollt dann auch eine rausschmeisen aber dann werd ich aufgefordert das ich sie wieder implementieren soll ... hmmm ...


----------

