Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: alex0178 am 18.10.07 - 17:03:29

Titel: Nutzung der Itext-Klassen
Beitrag von: alex0178 am 18.10.07 - 17:03:29
Ich möchte die Dokumente in einer Datenbank als PDF exportieren und dazu die Itext-Klassen verwenden. Auf openntf.org habe ich ein Beispiel für einen Agenten gefunden.

Nach dem Import bekomme ich immer die Felhermeldung 'invalid class file format' in der unter .../notes/jvm/lib/ext gespeicherten itext-2.0.1.jar.

Da ich nicht mit Java bewandert bin, bräuchte ich ein paar Gedankenschübe, um vorwärts zu kommen.

Ich habe vorher extra alle Java-Downloads deinstalliert und nur noch die J2SE SDK in der Version 1.4.2 installiert.

Die Datenbank ist lokal gespeichert.

Falls jemand einen funktionsfähigen Scriptagenten hat, der die Itextklassen nützt, wäre ich auch für ein bischen Code dankbar.

alex0178
Titel: Re: Nutzung der Itext-Klassen
Beitrag von: flaite am 18.10.07 - 17:46:17
Welche Notes Version?
Notes7 sollte gehen, Notes6 nicht (benutzt Java 1.3 und nicht Java 1.4).
Ich habe vorher extra alle Java-Downloads deinstalliert und nur noch die J2SE SDK in der Version 1.4.2 installiert.
hat damit nix zu tun. Ich weiss in aller Regel gar nicht wie viele und welche Java Versionen ich gerade zufällig installiert habe.

Kannst du bitte links schicken  von:
a) dem Beispielagenten auf openNTF.
b) dem von dir heruntergeladenen itext.jar.  (muss nicht, wäre nett).

Gruß Axel
Titel: Re: Nutzung der Itext-Klassen
Beitrag von: alex0178 am 18.10.07 - 17:51:25
Hallo Axel,

danke für die Antwort:
- Nutze Notes 6.5.2

- http://www.openntf.org/Projects/codebin/codebin.nsf/0/63B9C615E6B53659862572B3003C0A07 (http://www.openntf.org/Projects/codebin/codebin.nsf/0/63B9C615E6B53659862572B3003C0A07)

- da hängt auch das Jar-File dran

Habe ich mit Notes 6 gar keine Möglichkeit, die Itextklassen zu nutzen?

alex0178
Titel: Re: Nutzung der Itext-Klassen
Beitrag von: flaite am 18.10.07 - 19:12:19
Gibt 2 Möglichkeiten:
1. Another option to get the source code is to download it from the SVN repository. There, you'll always find the most recent iText version, and even some branches to build your own jar for the older JDK 1.3 or newer JDKs such as JDK 1.5.
Hier ist eine gute Beschreibung zu aus-checken mit Eclipse  http://www.lowagie.com/iText/svn.html.
Wird aber nicht explizit darauf eingegangen, obs Spezial-gotchas für Java1.3 gibt und da du vermutlich weder  mit Java noch mit Ant noch mit Versionierungssystemen noch mit Eclipse vertraut bist, ist das sicher nicht einfach.

2. Eine alte Version runterladen: http://sourceforge.net/project/showfiles.php?group_id=15255&package_id=12596
Weiss aber nicht ab welcher Version Java1.4 erforderlich ist. 


Gruß Axel
Titel: Re: Nutzung der Itext-Klassen
Beitrag von: pete_bla am 18.10.07 - 20:02:28
Hi,

schöööönes tool, 8)
selbst für mich as höchstens Java-Kaffeetrinker einfach zu implementieren.....
1. txt-File in den agenten,
2. zip importieren
Ok ich habs mit 7.02 in einen Agenten gepackt ... aber sofort gelaufen (ohne einen "Mucks")!
(der Rest ist eigentlich nurnoch kleinkram - werd ich mich mal mehr mit Kaffee-Rösten als -Trinken beschäftigen...)

Mal sehen ob das auch ohne 'lokales ablegen' und ändern der Environment-Variablen geht...
(Ist bei uns ein KO-Kriterium bei Verwendung auf Servern)

Grüsse und Danke für die INFO, Pete(r)

P.S. ich versuch mal noch die Tage ob ich irgend eine Version mit 6.55 zum laufen bekomme !

-nachtrag: 18.10.2007 20:11
noch kurz, was rauskam als ich den Agenten mit R6.55 angestuppst habe (compiliert mit 7.02), falls dies jemandem hilft:

Zitat von: Java Console
java.lang.UnsupportedClassVersionError: Unsupported major.minor version 48.0
   at java.lang.ClassLoader.defineClass0(Native Method)
   at java.lang.ClassLoader.defineClass(ClassLoader.java:703)
   at java.lang.ClassLoader.defineClass(ClassLoader.java:627)
   at lotus.domino.AgentLoader.loadClass(Unknown Source)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:448)
   at java.lang.Class.newInstance0(Native Method)
   at java.lang.Class.newInstance(Class.java:262)
   at lotus.domino.AgentInfo.newInstance(Unknown Source)
   at lotus.domino.AgentLauncher.run(Unknown Source)
   at lotus.domino.NotesThread.run(NotesThread.java:216)

-noch ein Nachtrag: 18.10.2007 20:26
Nicht OpenNTF ist die quelle des codes von iText  sondern dort:
http://www.lowagie.com/iText/ (http://www.lowagie.com/iText/)
in OpenNTF ist wohl nur beschrieben wie man es in Notes implementiert.
Titel: Re: Nutzung der Itext-Klassen
Beitrag von: flaite am 18.10.07 - 20:59:37
Hallo Pete,

das ist quasi ein Game Over Error.
Java VMs schmeissen die, wenn sie auf eine  Klasse stossen, die mit einer höheren Version (hier: Java 1.4) kompiliert worden sind. Die Klassen der  aktuellen itext-jar ist mit Java1.4 kompiliert.
Offenbar gibts im Subversion-Versionierungssystem von iText branches der neuesten Version, die sich mit Java1.3 kompilieren lassen (keinerlei  Abhängigkeiten zu Java1.4 Klassen oder  Methoden).
Wenn jemand das hier (http://www.lowagie.com/iText/svn.html) durchspielt ist er ein paar Schritte weiter.
Vielleicht ist Java1.3-Branch-holen, kompilieren, packagen im ant-script drin. Weiss ich aber nicht. Sonst muss man das manuell machen.
Vielleicht mach ich das mal. Hab aber momentan keine Energie.

Gruß Axel 
Titel: Re: Nutzung der Itext-Klassen
Beitrag von: pete_bla am 18.10.07 - 21:14:45
Hi,

zuerst noch was zum erfolg:
mit dem 1.0er jar und etwas abgespecktem Agentencode
liess es sich auch unter 6.55 compilieren.
eigentlich ist dem Compiler nur das
Code
stable.setSpacingBefore(15f);
aufgestossen
Allerdings hab ich letztendlich nur Text und die Tabelle verwendet - würde mir aber momentan mit potentiellen Projekten schonmal eine Lösung geben, wo man sonst immer sagte
 "sorry kauf dir nen akrobat / installier pdf-creator und druck aus"

Mal sehen wie ich weiterkomme...
Ich kanns im moment ja als hobby weitertreiben -
dazu hab ich glücklicherweise keinen Projektzwang   ^-^

@Axel danke für die Info ... (sowas war nahezu zu erwarten)
Die neueste version auf Java 1.3  zu kompilieren wäre auch was, mal sehen ob ichs auch hinbekomme...
- ich schätze sonst trifft man eben erstmal die relevanteste Version von iText die eben noch mit 6.55 läuft.

Grüsse, Pete(r)

@alex0178: wenns hilft:
Im Anhang noch meine abgespeckten Agentencode der mit iText 1.0 läuft.
Titel: Re: Nutzung der Itext-Klassen
Beitrag von: flaite am 18.10.07 - 21:27:59
Die aktuelle Version lässt sich schon kompilieren. Man muss wohl nur ein paar Sachen löschen.
http://threebit.net/mail-archive/itext-questions/msg00694.html
Titel: Re: Nutzung der Itext-Klassen
Beitrag von: alex0178 am 19.10.07 - 10:25:07
Hallo Axel,
hallo Pete(r),

danke für die Hilfe. Habs nun mit itext 1.0 gemacht, erstellt auch eine PDF. Allerdings noch ohne Inhalt. Aber das wird bestimmt noch.

Wollte parallel dazu auch eine neue Version mit 1.3 kompliieren, allerdings kann ich das JDK 1.3 bei SUN nicht mehr downloaden (end-of-life). Mal kucken, ob ich das irgendwo noch herbekomme.

Unser NotesAdmin sagte mir, das wir die Vers. 7 von Notes vermutlich überspringen und dann (irgendwann) direkt auf 8 umstellen, weshalb ich nicht unbedingt warten möchte, bis wir eine mit JDK 1.4 kompliierte Version einsetzen können.

MERCI.

Alex
Titel: Re: Nutzung der Itext-Klassen
Beitrag von: MadMetzger am 19.10.07 - 10:57:10
Hast du Eclipse? Dann kannst du doch die IText-Klassen als Projekt öffnen. Für das Projekt kannst du in den Eigenschaften den Compiler auf 1.3 wechseln.
Titel: Re: Nutzung der Itext-Klassen
Beitrag von: flaite am 19.10.07 - 11:53:58
Falls man einen Domino 6 Server hat, kann man auch dessen JVM in Eclipse einbinden. Für die Notes6 Client JVM geht das leider nicht. Ist aber sowieso beides dasselbe.
Man kann sich auch von Sun eine Java1.3  JRE oder JSDK runterladen. 
In Eclipse Windows/Preferences/Installed JREs.
Dann von itext die Sourcen runterladen.
Projekt anlegen.
Für das Projekt die Java1.3 VM einbinden (Rechte Maustaste, Einstellungen wie in 2. Bild unten, eigener source Folder namens src).
itext sourcen in src-Ordner des Eclipse Projekts importieren (Rechte Maustaste auf source Folder, Import in Kontextmenü. Nur den Com Folder anklicken).
itext benötigt offenbar noch xml-Bibliotheken.
Arbeite dran. Zwischendurch.
 
Titel: Re: Nutzung der Itext-Klassen
Beitrag von: flaite am 19.10.07 - 12:36:19
... und bouncy-castle ... und java.nio Klassen  (uuups. Das ist ein Problem. GAME OVER).
Ich glaub, man sollte das doch besser die entsprechenden branches  aus dem subversion auschecken.

Titel: Re: Nutzung der Itext-Klassen
Beitrag von: Ralf_M_Petter am 19.10.07 - 13:47:07
Eventuell sollte man auch auf Notes 7.0.2 updaten, da Notes 6.5.5 auch schon demnächst EOL ist.

Grüße

Ralf
Titel: Re: Nutzung der Itext-Klassen
Beitrag von: pete_bla am 19.10.07 - 19:17:09
Hi,

Eventuell sollte man auch auf Notes 7.0.2 updaten, da Notes 6.5.5 auch schon demnächst EOL ist.
7.02 wäre für mich kein Problem und verwende ich auch,
aber wie gesagt fällt es dann bei den Usern, die R 6.5x haben auf die Nase, und bei momentan 99% meiner potentiellen Kunden ist das der Fall!
(Und eigentlich will ich auch nicht wissen wieviele Clients da gerade mit der version ausgerollt sind - ok ich weiss es, aber ich darfs nicht verraten -> names.nsf)

Darum werd ich mich weiter auf R 6.5x  (6.56 wäre teils scheinbar demnächst am ausrollen....) testen.

@Axel - das mit dem Server & Eclipse muss ich noch Teste
Danke für die detailierte Anleitung
- noch seh ich eher auf dem Kriegsfuss mit eclipse - ist wohl so wie es mir früher mit Notes oder Photoshop ging.... Mächtige Dinge benötigen eben eine kleinigkeit an Einarbeitung.

Grüsse, Pete(r)
und auch an die die Feiern (http://atnotes.de/index.php?topic=38111.msg243939#msg243939) - hab noch meine Sommerreifen drauf und Schneeketten passen da sowieso nicht.

-noch ein nachtrag-
nachdem es zuerst mau aussah bei sun bezüglich eines download von jdk 1.3.1 (http://java.sun.com/j2se/1.3/download.html)
wollte ich schon meine alte Solaris Sparc Station von 7 auf 8 Updaten  ;D
Zitat von: J2SE 1.3.1 Downloads
On Windows, Linux, Solaris 9, and Solaris 10  J2SE 1.3.1 has completed the Sun End of Life (EOL) process. The EOL transition period was from Oct 25, 2004 until the General Availability (GA) of Java SE 6 on December 11th, 2006. With this notice, customers are strongly encouraged to migrate to the current release, Java SE 6.  »   Read More.  A paid Java Vintage Support Offering is available for those customers who are interested in continuing to obtain support for the release. Please contact your Sun sales representative for details.
On Solaris 8 - J2SE 1.3.1 is continuing in the Sun End of Life (EOL) process. The EOL transition period began Oct 25, 2004 and will continue until the the end of the Solaris 8 five year Vintage Support Period. During this EOL transition period, the products will continue to be supported on Solaris 8 per existing customer support agreements.
aber wenn man das doch liest, kommt da noch der hinweis:
Zitat von: J2SE 1.3.1 Downloads
For developer needs, all products that have completed the EOL transition period will be moved to the Archive area.
und im Archiv bekommt man endlich das jdk1.3.1_20 bzw. J2SE v 1.3.1_20 (http://java.sun.com/products/archive/j2se/1.3.1_20/index.html)
Eclipse angeschmissen (huups wieder mit Google Earth verwechselt - mistig kleine icons) und importiert.
Also dann mal ausmisten und sehen wie es weitergeht!
Titel: Re: Nutzung der Itext-Klassen
Beitrag von: Ralf_M_Petter am 22.10.07 - 08:07:06
Nun denn, wenn der Notes Client nicht updatebar ist, arbeite ich immer mit einer externen JVM. Die ich dann mit shell aufrufe. Das klappt auch super und ich habe dann wirklich eine aktuelle. Die kann genauso über die Notes.jar auf die NSF Daten zugreifen.

Eventuell ist das ja noch eine Option.

Grüße

Ralf
Titel: Re: Nutzung der Itext-Klassen
Beitrag von: flaite am 22.10.07 - 09:35:02
Meine Game Over Bemerkungen sind kein Spaß.
Die Kompilierung auf 1.3 ist schon ein bischen ein sportliche Übung, aus der ich sicher was lernen könnte, für die ich aber selbst z.Zt. keine Zeit habe. Du müßtest da schon auf das Subversion-Versionierungssystem des Projekts selbst zugreifen. Sieht so aus, dass die irgendwann auf 1.4  gewechselt sind und immer mehr Klassen verwenden, die es in 1.3 nicht gibt. Bruno Lowagie spricht aber von gewissen branches im Subversion,  die  extra für 1.3 Kompilierung  da sind.  Ist aber noch nicht mal 100% sicher, ob  es die für die neueste Version überhaupt noch gibt.

Ralfs Lösung ist auf jeden Fall einfacher. Dafür müßten aber die Anwender zusätzlich eine Java>=1.4.02 VM installiert haben. Das ist bei den Kunden möglicherweise auch nicht  beliebt.
Eine Alternative bestände darin, die PDFs nur serverseitig zu generieren (falls die Kunden zumindest einen Notes  7 Server haben. 
Denkbar ist auch, zentral einen Tomcat zu installieren, der per Webservice integriert ist. Kompliziert aber die Administration  wieder ein bischen.
Oder eine ältere Version von iText suchen, die auf 1.3 läuft. Würd mir ein bischen Mühe geben, die höchste Version zu finden.

Gruß Axel
Titel: Re: Nutzung der Itext-Klassen
Beitrag von: pete_bla am 22.10.07 - 15:41:05
Hi,

@Ralf & @Axel
Danke für eure Bemerkungen und Vorschläge -
mein Thread ist das hier zwar nicht, ich finde das Thema aber hoch interessant und werde mich auch weiter damit beschäftigen.
An der Compilierungshürde von Version 2.06 für Notes 6.55 mit bouncycastle ect. bin ich natürlich auch gescheitert -

So als Zusammenfassung:
iText ist ein geniales Tool um PDFs mittels Java zu erstellen - auch direkt aus Notesagenten!
Zwischenversionen von iText habe ich noch nicht gestet.
Was die Versionen bieten habe ich noch nicht ausgereizt. (crypto ect. ...)

Eine PDF-Erstellung ist auch mit R6.55 und iText 1.4.6 machbar.
(Text und Tabellen habe ich getestet. Bilder, Richtext,  ..., cryptop stehen noch aus.)

Welche Bugs man sich einhandelt und welche Features dann fehlen, kann man sicher auf der Hompage von iText (www.lowagie.com) nachlesen (http://www.lowagie.com/iText/)

Grüsse, Pete(r)

PS: Ich gebe mich hier noch nicht geschlagen!
Ein complilieren von iText 2.06 auf Java 1.3 fällt erstmal aus
.. und bouncy-castle ... und java.nio Klassen  (uuups. Das ist ein Problem. GAME OVER).
aber mal sehen wie es weitergeht:
- test mit den Versionen >1.00 <= 2.0 - momentan bei 1.4.6 für Notes 6.55 funktional
- gnadenloses abspecken der iText 2.06 auf die relevantesten Dinge
...
ich melde mich dazu!
(Schade dass es mit 7.02 geht, ansonsten hätte man ein Notes2iText Projekt draus machen können!   ;D )
[/size]
Titel: Re: Nutzung der Itext-Klassen
Beitrag von: flaite am 22.10.07 - 21:08:22
Da sind eine Menge Probleme.
- Die neuesten Versionen von Bouncycastle sind auch nur für Java1.4 (http://www.bouncycastle.org/java.html)
- spezielles Notes-Problem: Notes 6 hatte keinen JAXP-konformen XML Parser.