Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino
Java Agent Fehlermeldungen nach Kopie
v_haderer:
Guten Morgen,
ja der Agent ist von mir gänzlich neu erstellt worden.
com.itextpdf.text.exceptions.InvalidPdfException: PDF header signature not found.
at com.itextpdf.text.pdf.PRTokeniser.getHeaderOffset(PRTokeniser.java:229)
at com.itextpdf.text.pdf.PdfReader.getOffsetTokeniser(PdfReader.java:497)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:176)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:219)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:207)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:197)
at JavaAgent.NotesMain(Unknown Source)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)
Ich habe nun ganz oldschool versucht mich an die Stelle hinZuPrinten ;-)
--- Code: ---public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
DocumentCollection dc = agentContext.getUnprocessedDocuments();
Document doc = dc.getFirstDocument(); //
String form_template = doc.getItemValueString("pdfQuellPfad");
String form_filled = doc.getItemValueString("pdfZielPfad");
// Init PDF
PdfReader reader = new PdfReader(form_template); // <- bis hier und nicht weiter
.........
...
--- Ende Code ---
Genau bei obiger letzten Codezeile, dem Instanzieren des PDfReaderObjects, dürfte das Problem liegen. :( ???
Ralf_M_Petter:
Auf welchem Pfad liegt den das PDF. Ich nehme mal stark an, der Server oder der Agent am Server darf darauf nicht zugreifen. oder das PDF ist ungültig.
Ralf_M_Petter:
Übrigens noch ein Tipp. Aktiviere doch die Java Debug Informationen wie in http://www.bizzybee.be/2013/01/11/debugging-java-code-in-domino-designer-8-5-or-9/ beschrieben. Dann musst du auch nicht rätseln wo der Fehler auftritt, bzw. lass den Agent doch im Debugger laufen um genauer zu sehen, was das Problem ist. Die Debugging Session sollte natürlich nicht auf einem Produktivserver laufen.
v_haderer:
Hey danke für den Tipp :-) !
Des Rätsels Lösung unabhängig davon ->
--- Code: ---DocumentCollection dc = agentContext.getUnprocessedDocuments();
--- Ende Code ---
Wo keine UnprocessedDocuments da auch kein Doc und somit ein leerer string 'form_template'.
Somit funktioniert diese Vartiante deutlich besser ;-) ->
--- Code: ---public void NotesMain() {
try {
Session session = getSession();
Database database = session.getCurrentDatabase();
AgentContext agentContext = session.getAgentContext();
Agent agent = agentContext.getCurrentAgent();
Document doc = database.getDocumentByID(agent.getParameterDocID());
String form_template = doc.getItemValueString("pdfQuellPfad");
PdfReader reader = new PdfReader(form_template);
--- Ende Code ---
Danke für eure Hilfe!
flaite:
Tendentiell machst Du als Java Entwickler ziemlich viele häßlich aussehende null checks
--- Code: ---if (variableMhhMhhMhh == null) {
throw new IllegalStateException("variableMhhMhhMhh is null, but shouldn't.");
}
--- Ende Code ---
und auch
--- Code: ---if (collection.size() <= 0) {
throw new IllegalStateException("Collection xxxx is empty");
}
--- Ende Code ---
was irgendwie dasselbe ist.
Das macht den code DEFINITIV robuster. Falls ein Fehler auftritt, ist der stack trace einfacher zu verstehen.
So ist das letztlich ein Folgefehler, der sehr viel später in itext auffällt.
Was Du der externen Bibliothek (d.h. itext) über den Zaun wirfst, validierst Du so vorher auf Korrektheit.
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln