Java Integration

Startseite  Vorherige Seite  Nächste Seite

 

Wenn Sie Java in der Notes-/Domino-Umgebung Lotus Script vorziehen, so können Sie n2pdf auch direkt in Java (ab JRE 1.4) verwenden.

 

Dafür implementiert die DLL eine Schnittstelle, die per Java Native Interface(JNI) angesprochen werden kann.

 

112

http://java.sun.com/javase/6/docs/technotes/guides/jni/index.html

 

 

 

Hierdurch wird es möglich, n2pdf in der Programmiersprache Java (aus Notes/Domino oder anderen Java-Entwicklungsumgebungen, wie z. B. Netbeans oder Eclipse) zu verwenden. Sie können also die n2pdf-Funktionen auch aus Java heraus ansprechen.

 

Zur vereinfachten Verwendung in Java stellen wir Ihnen eine komplette "Java Wrapper Class" zur Verfügung ("n2pdfJNI.jar"). In dieser Klasse sind alle Funktionsaufrufe und Konstanten von n2pdf für Java definiert.

 

Aber natürlich können Sie so n2pdf nicht nur aus Notes/Domino heraus verwenden - setzen Sie n2pdf auch in externen Java-Anwendungen oder auf J2EE-Servern ein - n2pdf ist sehr flexibel.

 

112

Bitte beachten Sie, dass n2pdf auch weiterhin an die Windows-Plattform gebunden ist.

 

 

112

Das Grundprinzip aus Lotus Script bleibt auch in Java erhalten. Wenn Fragen zum grundsätzlichen technischen Prinzip bestehen, nehmen Sie sich bitte das Grundprinzip auf Basis von Lotus Script als Vorlage.

 

 

Das nachfolgende Script entspricht dem logischen Aufbau, von "Grundprinzip für Lotus Script". Die Klammern mit Zahlen (in roter Schrift) dienen Ihnen hier als direkter Vergleich zu den Lotus Script Funktionen.

 

 

import lotus.domino.*;

import de.softvision.jni.N2pdf; ' (1)

 

public class CreatePDF  {

 

 int jobID = -1;

 

 N2pdf n2pdf = new N2pdf();        // create n2pdf instance

 

 AgentContext agentContext = null;

 

 public CreatePDF( AgentContext agentContext ) {

         this.agentContext = agentContext;

         }

 

 private void setHeaderOrFooter ( int isHeader ) {

         // build the view name

         String viewName = (isHeader==1?"(Header)":"(Footer)");

         

         try {

                 // get the current database

                 Database db = agentContext.getCurrentDatabase();

                 if ( db == null ) {

                         return; }

 

                 // get the view from the current database

                 View view = db.getView ( viewName );

                 if ( view == null ) {

                         return; }

                         

                 // get the first document in the view        

                 Document doc = view.getFirstDocument();

                 if ( doc == null ) {

                         return; }

                         

                 if ( isHeader == 1 ) {

                         n2pdf.N2PDFAddRTContent ( jobID, n2pdf.N2PDFVALUE_CONTENT_HEADER,

                         n2pdf.N2PDFVALUE_HF_ALL_PAGES,

                         db.getServer(), db.getFilePath(), doc.getUniversalID(), "Body" ); '  (6) Hier als RichText Header

                 } else {

                         n2pdf.N2PDFAddRTContent ( jobID, n2pdf.N2PDFVALUE_CONTENT_FOOTER,

                         n2pdf.N2PDFVALUE_HF_ALL_PAGES,

                         db.getServer(), db.getFilePath(), doc.getUniversalID(), "Body" );

                 }

                 

                 } catch(Exception e) {

                   e.printStackTrace();

                 }

 }

 

 public void process () {

         try {

                 int numOfDocs = 9;

                 int currentDoc = 0;

                 int pageBreak = 0;

                 String tocText = "";

                 

         // get the current database

                   Database db = agentContext.getCurrentDatabase();

                   if ( db == null ) {

                           return;}

 

         // get the view                            

                   View view = db.getView("HelpFile");

                   if ( view == null ) {

                           return;}                    

 

         // get the first document from view

                   Document doc = view.getFirstDocument();

                   if ( doc == null ) {

                           return; }

                           

                     // get the target file name

                 String pdfFileName = n2pdf.N2PDFCreateTempFile(".pdf"); ' (10)

                 

                 // initialize a new n2pdf job

                 jobID = n2pdf.N2PDFInit ( 0 ); ' (2)

                 

                 // n2pdf job initialized? ' (3)

                 if ( jobID < 0 ) {

                         return; }

                   

                 // set the header for the PDF

                 setHeaderOrFooter ( 1 );

         

                 // set the footer for the PDF

                 setHeaderOrFooter ( 0 );

                   

                           // auto-launch the PDF viewer

                 n2pdf.N2PDFSetOption ( jobID,

                 n2pdf.N2PDFOPTION_SYSTEM_LAUNCH_VIEWER, n2pdf.N2PDFVALUE_TRUE, "" ); ' (4)

 

                 // create a TOC for the PDF

                 n2pdf.N2PDFSetOption ( jobID, n2pdf.N2PDFOPTION_TOC, n2pdf.N2PDFVALUE_TRUE, "" );

                 

                 // convert doc links into PDF links

                 n2pdf.N2PDFSetOption ( jobID,

                 n2pdf.N2PDFOPTION_NOTES_LINK_DOC_MODE, n2pdf.N2PDFVALUE_NOTES_LINK_MODE_IMAGE_LINK, "" );

 

                 // enable PDF compression

                 n2pdf.N2PDFSetOption ( jobID,

                 n2pdf.N2PDFOPTION_PDF_COMPRESSION_MODE, n2pdf.N2PDFVALUE_COMPRESSION_DEFLATE, "" );

                 

                 // set font settings for the default text template

                 n2pdf.N2PDFSetOption ( jobID,

                 n2pdf.N2PDFOPTION_PARAGRAPH_FONT_NAME, "Arial", n2pdf.N2PDFVALUE_DEFAULT_PARAGRAPH_NAME );

                 n2pdf.N2PDFSetOption ( jobID,

                 n2pdf.N2PDFOPTION_PARAGRAPH_FONT_SIZE, "14", n2pdf.N2PDFVALUE_DEFAULT_PARAGRAPH_NAME );

                 n2pdf.N2PDFSetOption ( jobID, n2pdf.N2PDFOPTION_PARAGRAPH_FONT_COLOR,

                 n2pdf.N2PDFVALUE_COLOR_PURPLE, n2pdf.N2PDFVALUE_DEFAULT_PARAGRAPH_NAME );

                                         

                 // skip thru all documents                                                

                 while (doc != null) { ' (5)

                         

                         // count the number of documents

                             currentDoc ++;

       

                                   // if this is the last document, we do not need a page break

                           if ( currentDoc == numOfDocs ) {

                                     pageBreak = 0;

                             }

                             else {

                                     pageBreak = n2pdf.N2PDFVALUE_PAGEBREAK_AFTER;

                             }

                             

                             // build the syntax for the chapter title

                             tocText = "[TOC:" + doc.getItemValueString("ChapterLevel")+"]" +

                         doc.getItemValueString("ChapterTitle")+(char)13;

                             

                             // add the chapter title (plain text) to the PDF

                             n2pdf.N2PDFAddContent ( jobID,

                         n2pdf.N2PDFVALUE_CONTENT_BODY, n2pdf.N2PDFVALUE_CRLF_AFTER, tocText ); '  (6)

                             

                             // add the RichText content to the PDF

                             n2pdf.N2PDFAddRTContent ( jobID, n2pdf.N2PDFVALUE_CONTENT_BODY,

                         pageBreak, db.getServer(), db.getFilePath(), doc.getUniversalID(), "Body" ); ' (8)

                             

                             // get the next document

                             doc = view.getNextDocument(doc); ' (5)

                 }

                 

                 // create the output PDF file

                 n2pdf.N2PDFProcess ( jobID, pdfFileName, 0 ); ' (9)

 

                 } catch(Exception e) {

                   e.printStackTrace();

                 }

 }

}

 

114

Eine Beispielnutzung der Klasse finden Sie in unserer Beispieldatenbank "n2pdf_JNI.nsf". Dort wurde der Agent "(n2pdf_Java_Agent)" geschrieben, der die Java Library "n2pdf_Java" verwendet. In der Klasse wird die Verwendung von n2pdf gezeigt.