Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

word dokument parsen / bearbeiten

45 views
Skip to first unread message

Elmar Weber

unread,
Aug 21, 2002, 7:31:03 AM8/21/02
to
hallo,

man kann in word dokumenten ja platzhalter verwenden. gibt es ein modul
für java, welches es ermöglicht, diese platzhalter zu finden, durch
eigenen text zu ersetzen und dann auszudrucken?

oder generell ansätze für module um mit word dokumenten in java zu arbeiten?

über google habe ich nur kommerzielle gefunden.


ciao,
elmar weber


---------------------------------------------------------------------
"Religion und Familie sind die beiden größten Feinde des Fortschritts."
(André Gide (1869 - 1951), französischer Schriftsteller)

Thomas Porocnik

unread,
Aug 21, 2002, 7:42:13 AM8/21/02
to

"Elmar Weber" <webm...@sniper-lan.de> schrieb im Newsbeitrag
news:3D6379F7...@sniper-lan.de...

?
>
> oder generell ansätze für module um mit word dokumenten in java zu
arbeiten?
>
Auf die Schnelle würde ich sagen, mach die Funktinalität mit VB und wrappe
das dann mit Java...

Thomas

Hermann Angstl

unread,
Aug 21, 2002, 9:04:57 AM8/21/02
to
Elmar Weber wrote:

> oder generell ansätze für module um mit word dokumenten in java zu arbeiten?

Schau mal bei http://jakarta.apache.org/poi/

HDF (Horrible Document Format):
"...HDF is our port of the Microsoft Word 97 file format to pure Java. It
supports read and write capability. Please see the HDF project page for more
information. This component is in the early stages of design. Jump in! ..."

Nico Seessle

unread,
Aug 21, 2002, 10:09:17 AM8/21/02
to
Elmar Weber wrote:

> man kann in word dokumenten ja platzhalter verwenden. gibt es ein modul
> für java, welches es ermöglicht, diese platzhalter zu finden, durch
> eigenen text zu ersetzen und dann auszudrucken?

Und als dritte Variante zu den beiden Vorgeschlagenen...

Du kannst auch einen sogenannten COM-Wrapper (wie z.B. jacoZoom von
http://www.infozoom.de, aber es gibt da auch andere) verwenden. Das
erfordert natürlich (keine Ahnung ob jacoZoom auch DCOM unterstützt, es
gäbe da aber auch Produkte) die Verwendung des Programms (oder
Programmteils) auf einem Windows-Rechner.

Naja, oder eben noch die vierte Variante: Du speicherst einfach deine
Word-Dokumente im RTF-Format (kann auch mit der Extension .doc sein, um
die Anwender nicht zu "verwirren") und liest das einfach (ist dann eine
normale ASCII-Datei in einem speziellen Format). Je nachdem was du
machst, kann das aber auch mal sehr fehleranfällig sein und Word
reagiert da sehr "seltsam", wenn da nur ein kleines fitzelchen Falsch ist...

Nico

Elmar Weber

unread,
Aug 21, 2002, 11:04:21 AM8/21/02
to
danke für die antworten.

Marco Schmidt

unread,
Aug 21, 2002, 12:23:49 PM8/21/02
to
Elmar Weber wrote:

[...]

>oder generell ansätze für module um mit word dokumenten in java zu arbeiten?

Siehe
<http://www.geocities.com/marcoschmidt.geo/java-document-libraries.html#word>.

Gruß,
Marco
--
Bitte nur in der Newsgroup antworten, nicht per Email!
de.comp.lang.java Homepage: http://www.dclj.de/
FAQ: http://www.faqs.org/faqs/de/comp-lang-java/faq/
Meine Java-Seiten: http://www.geocities.com/marcoschmidt.geo/java.html

Roman Grom

unread,
Aug 21, 2002, 7:48:18 PM8/21/02
to

>
> man kann in word dokumenten ja platzhalter verwenden. gibt es ein modul
> für java, welches es ermöglicht, diese platzhalter zu finden, durch
> eigenen text zu ersetzen und dann auszudrucken?
>
> oder generell ansätze für module um mit word dokumenten in java zu arbeiten?
>
> über google habe ich nur kommerzielle gefunden.
>

Hallo,

wenn es Word Dokumente im RTF Format sein dürfen.

Die <Platzhalter> in Deinen Template Dokumenten korespondieren mit den Namen
der Variablen aus der <FORM> die das Servlet ruft.

Viel Spass!
Roman

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

import org.jdom.*;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.DocType;
import org.jdom.Comment;
import org.jdom.ProcessingInstruction;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;


public class RTFTextGenerator extends HttpServlet {

/**
<p>Ersetzt in <code>source</code> enthaltenen Tags durch den Wert der
Name Wert Paare aus <code>values</code></p>
*/

private String parseTag (String source, Hashtable values) {
StringBuffer result = new StringBuffer();
int start = 0;
int end;
String tag;
String value;

while ((end = source.indexOf("<", start)) != -1) {
result.append(source.substring(start, end));
start = end + 1;
end = source.indexOf(">", start);

if (end == -1) { /
start--;
break;
}
tag = source.substring(start, end);
value = (String) values.get(tag);

if (value != null) {
result.append(value);
}
else {
result.append("<");
result.append(tag);
result.append(">");
}
start = end + 1;
}

if (start == 0) {
result.append(start);
return result.toString();
}
else {
return result.toString();
}
}

/**
<p>Konvertierung der Umlaute in RTF- konforme Codesequenzen.
<code>wert</code> - Umlaut zu konvertieren in RTF</p>
*/

private String convUmlaut(String wert) {

final String[] TAB = {
"\\" + "u196" + "\\" + "\'" + "80", //Ä
"\\" + "u228" + "\\" + "\'" + "8a", //ä
"\\" + "u214" + "\\" + "\'" + "85", //Ö
"\\" + "u246" + "\\" + "\'" + "9a", //ö
"\\" + "u220" + "\\" + "\'" + "86", //Ü
"\\" + "u252" + "\\" + "\'" + "9f", //ü
"\\" + "u223" + "\\" + "\'" + "a7", //ß
};

if (wert != null) {
StringBuffer buf = new StringBuffer();

for (int i=0; i < wert.length(); i++) {
char c = wert.charAt(i);

switch (c) {
case 'Ä': buf.append(TAB[0]); break;
case 'ä': buf.append(TAB[1]); break;
case 'Ö': buf.append(TAB[2]); break;
case 'ö': buf.append(TAB[3]); break;
case 'Ü': buf.append(TAB[4]); break;
case 'ü': buf.append(TAB[5]); break;
case 'ß': buf.append(TAB[6]); break;
default: buf.append(c);
}
}
return buf.toString();
}
else
return "";
}

public void service (HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {

// Variablen werden im Programmlauf teilweise überschrieben

String FileBase = "aw_template_doc";
String FileName = "test2.rtf";
DataInput lineIn;
Enumeration values = request.getParameterNames();
Hashtable parameter = new Hashtable();
String line;
String parsed;
String filename = "callYourAdmin";
Element t = null;
String MimeTyp = "text/rtf";
String template;
Document doc = null;
Element rootElement = null;
String fileoption;
String userID;

// HTTP Parameter lesen und Umlautkonvertiert in Hashtable <parameter>
ablegen

while(values.hasMoreElements()) {
String name = (String) values.nextElement();
String wert = convUmlaut(request.getParameter(name));
parameter.put(name, wert);
}

// aw_text.xml verarbeiten

userID = (String)parameter.get("uid");
fileoption = (String)parameter.get("FileOption");

try {
SAXBuilder b = new SAXBuilder();
doc = b.build(new File(getServletContext()
.getRealPath("/WEB-INF/texto2.xml")));
rootElement = doc.getRootElement();
}

catch (JDOMException j) {
log("aw_text:warn:JDOMException in getOptionList(): " +
j.getMessage());
}


// Ausgabe an die Zielanwendung

response.setContentType(MimeTyp);
response.setHeader("Content-disposition", "attachment;filename="
+filename);
PrintWriter out = response.getWriter();

try {
lineIn = new DataInputStream(new FileInputStream(FileBase +
System.getProperties()

.getProperty("file.separator")
+
FileName));
while ((line = lineIn.readLine()) != null) {
parsed = parseTag(line, parameter);
if (parsed.equals("0")) {
out.print(line);
}
else {
out.print(parsed);
}
}
}
catch (IOException e) {
log("RTFTextGenarator:warn:IOException bei Lesen Vorlagedokument: "
+ FileName + "Fehlermeldung: " + e.getMessage());
}
}
}

Elmar Weber

unread,
Aug 22, 2002, 12:32:04 PM8/22/02
to
Roman Grom schrieb:

> Hallo,
>
> wenn es Word Dokumente im RTF Format sein dürfen.
>
> Die <Platzhalter> in Deinen Template Dokumenten korespondieren mit den Namen
> der Variablen aus der <FORM> die das Servlet ruft.
>
gegen rtf spräche eigentlich nichts, nur hat java (zumindest wenn ich
ein mit word erstellts rtf lade) probleme wenn bilder in der rtf sind,
die werden nähmlich nicht dargestellt. und da auch bilder enthalten sein
können / sollen und das ganze dann auch ausgedruckt wird, fällt rtf
leider flach.

Roman Grom

unread,
Aug 22, 2002, 4:31:31 PM8/22/02
to
So ist das Leben, so ist es eben ;)

0 new messages