Word/PDF Generierung

Status
Nicht offen für weitere Antworten.

zzz

Mitglied
Hallo,

ich bin gerade auf der Suche nach einer Möglichkeit folgende Aufgabenstellung zu lösen und möchte wissen, wie man sowas am geschicktesten mit Java löst:

Aufgabe:
Es sollen mit Word bearbeitbare Dokumente (ob doc, rtf oder wordml ist egal) als Templates herangezogen werden, in denen Platzhalter durch die entsprechenden Texte zur Laufzeit ersetzt werden, es sollen also mit Word erstellte Templates nach dem Prinzip der Seriendruckgenerierung gefüllt werden.
Die fertigen Dokumente sollen durch die (Web-) Applikation vom User in einem wordfähigem Format und in PDF Form heruntergeladen werden können.

Wo finde ich da konkrete Beispiele/Tutorials?

Das ganze soll auf einem Linuxserver ablaufen.

Vielen Dank
 

zzz

Mitglied
Danke foobar,

ich hab da ne Kleinigkeit vergessen zu erwähnen, es muss auf nem Linuxserver laufen :? , hab das schon im Beitrag oben ergänzt.

Nur für alle Interessierten:
Ich habe mich den ganzen Morgen mit der Konvertierung von RTF -> FO -> PDF beschäftigt.
Vergesst es einfach, da kommt ein Sch*** raus, das gibts gar nicht.

Texte und Bilder funktionieren recht gut, sobald aber ne Tabelle ins Spiel kommt zerlegt es das ganze Layout.
 

Ullenboom

Bekanntes Mitglied
Man kann hier OpenOffice und die UNO-API verwenden. Wenn's eine neuere Office-Version sein darf, dann wäre das XML-Format von Word natürlich mehr als praktisch.
 

zzz

Mitglied
OK, die Wahl ist getroffen.

Ich verwende OpenOffice.org, lass es als daemon laufen und sprech es über diese NiceOfficeAccess NOA Library an.
Das ist ziemlich easy und die einzige Möglichkeit auf nem Linuxsystem anständig Word Dokumente handeln zu können.

Das folgende Testprogramm lädt ein Worddokument als Template, ersetzt einmal das "Tag" $$TEXT$$ mit nem Wert (Textsuche), danach sucht es nach nem Formularfeld und beschreibt dieses. Abschließend wird das geänderte Dokument in Word-Form und in PDF-Form abgespeichert. Das ganze wird auf nem Remoterechner gestartet.
Achtung, das ist ne Schleife drin, die das ganze 1000mal ausführt. Hab ich als Lasttest benutzt.


Code:
package tst;

import java.util.HashMap;

import ag.ion.bion.officelayer.application.IOfficeApplication;
import ag.ion.bion.officelayer.application.OfficeApplicationException;
import ag.ion.bion.officelayer.application.OfficeApplicationRuntime;
import ag.ion.bion.officelayer.document.IDocument;
import ag.ion.bion.officelayer.filter.MSOffice97Filter;
import ag.ion.bion.officelayer.filter.PDFFilter;
import ag.ion.bion.officelayer.text.ITextDocument;
import ag.ion.bion.officelayer.text.ITextField;
import ag.ion.bion.officelayer.text.ITextRange;
import ag.ion.noa.document.ISearchableDocument;
import ag.ion.noa.search.ISearchResult;
import ag.ion.noa.search.SearchDescriptor;

public class OpenOffice_T1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		IOfficeApplication officeApplication = null;
		System.out.println("Starte Prozedur ...");
		try {
			
			HashMap configuration = new HashMap();
			configuration.put(IOfficeApplication.APPLICATION_HOST_KEY, "192.168.0.177");
			configuration.put(IOfficeApplication.APPLICATION_PORT_KEY, "8100");
			configuration.put(IOfficeApplication.APPLICATION_TYPE_KEY, IOfficeApplication.REMOTE_APPLICATION);
			
			try {
				officeApplication=OfficeApplicationRuntime.getApplication(configuration);
				officeApplication.setConfiguration(configuration);
				officeApplication.activate();
				
			} catch (OfficeApplicationException e) {
				e.printStackTrace();
			}

			PDFFilter pdffilter = new PDFFilter();
			MSOffice97Filter msofficefilter = new MSOffice97Filter();
			
		
			for( int z = 0; z < 1000; z++)
			{

				IDocument document = officeApplication.getDocumentService().loadDocument("/opt/documents/template.doc");
				ITextDocument textDocument=(ITextDocument) document;
				
				/* Substitution via Search & Replace */
				ISearchableDocument sdoc  = (ISearchableDocument)textDocument;
				SearchDescriptor searchDescriptor = new SearchDescriptor("$$TEXT$$");
				searchDescriptor.setIsCaseSensitive(false);
				ISearchResult searchResult = sdoc.getSearchService().findAll(searchDescriptor);
				if(!searchResult.isEmpty()) {
					
					//System.out.println("Text wurde gefunden !!!");
					
					ITextRange textRanges[] = searchResult.getTextRanges();
					for(int i = 0; i < textRanges.length; i++) {
					
						textRanges[i].setText("!!! Search & Replace Substitution funktioniert !!!" );
					
					}
				
				} 
				textDocument = (ITextDocument)sdoc;
				/* [ENDE] Substitution via Search & Replace */
				
				/* Substitution via ITextFieldService */
				
				ITextField[] textFields = textDocument.getTextFieldService().getUserTextFields();
				for( int i = 0; i < textFields.length; i++ ) {
					
					//System.out.println( textFields[i].getDisplayText() );
					if( textFields[i].getDisplayText().trim().equalsIgnoreCase("$$ZEICHEN$$") ) {
						
						textFields[i].getTextRange().setText("!!! ITextFieldService Substitution funktioniert !!!");
						
					}
					
				}
				/* [ENDE] Substitution via ITextFieldService */
				
				/* Kopie speichern und als PDF exportieren */
				textDocument.getPersistenceService().export("/opt/documents/out/template_" + z + ".pdf", pdffilter);
				textDocument.getPersistenceService().export("/opt/documents/out/template_modified_" + z + ".doc", msofficefilter);
	
				textDocument.close();
				
				textDocument = null;
				sdoc = null;
				textFields = null;
				searchDescriptor = null;
			}
			
			System.out.println("Beende Prozedur ...");
			
		} 
		catch (Throwable throwable) {
			throwable.printStackTrace();
			System.out.println("Exception");
		}
		finally {
			
			try {
			officeApplication.deactivate();
			officeApplication.dispose();
			}
			catch( Exception e) {}
		}
		
	}

}

[/code]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Automatisierte generierung von "Word"-Dokumenten Allgemeine Java-Themen 5
B Per Java Word Dokument schreiben? Allgemeine Java-Themen 8
E Ersetzen eines Bildes in der Kopfzeile eines Word-Docx-Dokuments mit Apache POI XWPF Allgemeine Java-Themen 0
I Apache POI Bild in Word ersetzen Allgemeine Java-Themen 15
M Aus XML ein Word-Dokument(Template) füllen Allgemeine Java-Themen 8
I Text suchen und ersetzen im Word Dokument Allgemeine Java-Themen 3
RalleYTN float in WORD konvertieren Allgemeine Java-Themen 1
J Datentypen Absätze mit String im Word Dokument Allgemeine Java-Themen 3
J Input/Output Word Datei einlesen, verarbeiten und abspeichern Allgemeine Java-Themen 3
Thallius PDF oder Word als Template benutzen Allgemeine Java-Themen 1
I Apache POI Word Text einfügen Allgemeine Java-Themen 26
D Symbol in Word-Dokument einfügen Allgemeine Java-Themen 1
D OOXML-Schemas (Word / Fußzeile) Allgemeine Java-Themen 0
K Apache POI Word Tabelle Zellen verbinden Allgemeine Java-Themen 4
K Apache POI Word Tabelle Spaltenbreite festlegen Allgemeine Java-Themen 7
K Apache POI Word bestimmte Textstellen bearbeiten Allgemeine Java-Themen 1
T Word Java Absatz Allgemeine Java-Themen 4
R MS Word in PDF konvertieren Allgemeine Java-Themen 1
T Mit Apache Poi Daten aus einer Excel Tabelle kopieren und in Word einfügen Allgemeine Java-Themen 1
H Input/Output Microsoft Word aus JAVA Heraus Steuern. Allgemeine Java-Themen 3
Landei Collections Word-Frequenzen zählen Allgemeine Java-Themen 7
M Word mit Parameterübergabe Allgemeine Java-Themen 2
M Syntax Highlighter für MS Word? Allgemeine Java-Themen 2
Beckenbauer Mehrere Paragraphe in eine Word Datei schreiben Allgemeine Java-Themen 4
S Formatierungen aus HTML-Dokument übernehmen und in Word docx schreiben Allgemeine Java-Themen 3
K Word Dokument bearbeiten Allgemeine Java-Themen 2
Blacky_82 word-Vorlage in java öffnen Allgemeine Java-Themen 4
ARadauer Word Datein bearbeiten Allgemeine Java-Themen 3
MQue aus einem Applet auf Word zugreifen Allgemeine Java-Themen 3
M Speichern von Word als Event abfangen Allgemeine Java-Themen 7
F Plugin damit M$ Word Java syntax versteht? Allgemeine Java-Themen 12
K Bilder mit Java in MS Word einfügen Allgemeine Java-Themen 2
S Java Code in Word Allgemeine Java-Themen 8
H Word Dateien erstellen Allgemeine Java-Themen 2
C Word Datei /Serienbrief erstellen Allgemeine Java-Themen 8
P word zu pdf konvertieren Allgemeine Java-Themen 5
H RTF zu Word-Dokument generieren Allgemeine Java-Themen 5
G Daten nach Word exportieren Allgemeine Java-Themen 2
G Word-Dokument in einem JFrame Allgemeine Java-Themen 2
D API für MS-Word Allgemeine Java-Themen 7
T Word, Excel u. Access API Allgemeine Java-Themen 2
R Datenübergabe: Java zu MS Word-Vorlage Allgemeine Java-Themen 6
A HTML, WORD, EXCEL API Allgemeine Java-Themen 4
P free lib: PDF Formulare - Word Formulare Allgemeine Java-Themen 7
J Word Vorlagen öffnen und mit Daten füttern Allgemeine Java-Themen 2
L Serienbrief in word mit übergabewerten? Allgemeine Java-Themen 9
D Word, Excel oder sonstige Dateien extern ausführen Allgemeine Java-Themen 9
S Word-Dokument in Textarea anzeigen Allgemeine Java-Themen 2
T PDF-Generierung (itext) - läuft unter Eclipse, bei har aber leere Seite Allgemeine Java-Themen 39
B Code generierung Velocity Templates Telosys Allgemeine Java-Themen 1
M Classpath Probleme bei JAR Generierung Allgemeine Java-Themen 2
S PDF-Generierung und Drucken Allgemeine Java-Themen 11
L iText PDF-Generierung ohne Speichern Allgemeine Java-Themen 10
Guybrush Threepwood HashCode-Generierung Allgemeine Java-Themen 4
B UML: Main classe verschwindet nach code generierung nicht?! Allgemeine Java-Themen 4
S Plugin zur Generierung von Builds Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben