CIB jView sign technischer Leitfaden
3. Schneller Einstieg: Einbindung des CIB jview&sign in Java
3.1. Einbindung von Jview&form&sign in eine Java Swing-Applikation
Integration in Java-Applikation (JFrame) und Anzeige einer PDF-Datei
import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.swing.Action;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import com.cib.comod.jobs.ICibFormatJob;
import de.cib.gui.framework.ICibApplication;
import de.cib.gui.framework.ICibRecApplication;
import de.cib.gui.framework.JCibApplication;
import de.cib.gui.util.trace.JCibTrace;
import de.cib.view.modules.sign.SignFieldCallback;
import de.cib.view.modules.sign.SignFieldInfo;
public class JCibViewFormSignRunner {
public static final String TEST_FILENAME = "test_sign.pdf";
public static void main(java.lang.String[] args) {
// activate / deactivate traces
JCibView.enableDebug(true);
JCibTrace.setTraceLevel(JCibTrace.LEVEL_INFO);
// create a new viewer instance
JCibView viewer = new JCibView();
//set license information to the viewer
setLicenseInformation(viewer);
//set input file (optional)
viewer.setProperty(ICibApplication.PROPERTY_INPUTFILE, TEST_FILENAME);
// create a new jrec2 instance and set properties
initJrec2(viewer);
// set programmatically properties to the viewer
setViewerProperties(viewer);
// set properties for &form
setFormProperties(viewer);
// set properties for &sign
setSignProperties(viewer);
// set properties to the viewer given by command line
setCommandLineProperties(viewer, args);
// create and show GUI
createAndShowGUI(viewer);
// register SignFieldCallbackTester
viewer.setSignFieldCallback(new SignFieldCallbackTester());
}
private static void createAndShowGUI(final JCibView viewer) {
// create a test jframe to embedd the viewer in it.
final JFrame viewerFrame = createViewerFrame();
// connect the test frame to the viewer
viewer.setFrame(viewerFrame);
viewerFrame.getContentPane().add(viewer, BorderLayout.CENTER);
// couple window closing to exit hook of viewer application
viewerFrame.setDefaultCloseOperation( WindowConstants.DO_NOTHING_ON_CLOSE);
viewerFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
Action t_action = viewer.getActionMap()
.get(ICibApplication.ACTION_EXIT);
if (t_action != null)
t_action.actionPerformed(null);
System.exit(0);
}
});
// here special exit operations can be implemented // which will be executed when the viewer gets closed
viewer.setExitHook(new Runnable() {
public void run() {
// do post processing here
viewer.stop();
// unregister SignFieldCallbackTester
viewer.setSignFieldCallback(null);
}
});
// start and run the viewer
viewer.load();
viewer.start();
// show frame in which the viewer is embedded
SwingUtilities.invokeLater(new Runnable() {
public void run() {
viewerFrame.setVisible(true);
}
});
}
private static void initJrec2(JCibView viewer) {
// create jrec2 instance without starting it
JCibApplication t_cibRec = viewer.getRec(false);
if (t_cibRec != null) {
// embedded jrec2 doesn't need Jrec-Ini file
t_cibRec.setProperty(ICibRecApplication. PROPERTY_JREC_INIFILENAME, null);
// Activate OK/Cancel icons in JRec toolbar
t_cibRec.setProperty(ICibRecApplication. PROPERTY_REC_SHOW_OK_CANCEL_ICON, Boolean.TRUE);
// Enable hyphenation
t_cibRec.setProperty(ICibRecApplication. PROPERTY_HYPHENATION_ENABLED, Boolean.TRUE);
// Set hyphenation dictionary path
t_cibRec.setProperty(ICibRecApplication. PROPERTY_HYPHENATION_DICTIONARY_PATH, "./lib/dict/");
// Enable spell checking
t_cibRec.setProperty(ICibRecApplication. PROPERTY_SPELLCHECKING_ENABLED, Boolean.TRUE);
// Set spell checking dictionary path
t_cibRec.setProperty(ICibRecApplication. PROPERTY_SPELLCHECKING_DICTIONARY_PATH, "./lib/dict/");
try {
String currentDir = new java.io.File(".") .getCanonicalPath();
currentDir += "/lib";
JCibTrace.trace("Current lib directory: " + currentDir, JCibTrace.LEVEL_INFO, true);
currentDir += "/win32";
t_cibRec.setProperty(ICibRecApplication. PROPERTY_SPELLCHECKING_NATIVE_LIBRARY_PATH, currentDir);
t_cibRec.setProperty(ICibRecApplication. PROPERTY_SPELLCHECKING_LANGUAGE, "de_DE");
} catch (IOException e) {
e.getMessage();
}
}
}
private static JFrame createViewerFrame() {
JFrame res = new JFrame();
res.setTitle("CIB Jview&form&sign ");
// 75 % of the screen width and height
int frameWidth = (int) ((Toolkit.getDefaultToolkit() .getScreenSize().getWidth()) * 0.75);
int frameHeight = (int) ((Toolkit.getDefaultToolkit() .getScreenSize().getHeight()) * 0.75);
// restore the frame's last position
res.setSize(frameWidth, frameHeight);
return res;
}
private static void setLicenseInformation(JCibView viewer) {
viewer.setProperty(ICibFormatJob.PROPERTY_LICENSECOMPANY, "");
viewer.setProperty(ICibFormatJob.PROPERTY_LICENSEKEY, "");
}
private static void setViewerProperties(JCibView viewer) {
viewer.setProperty( ICibApplication.PROPERTY_MENU_ENABLED, Boolean.FALSE);
viewer.setProperty( ICibApplication.PROPERTY_DRAG_AND_DROP_ENABLED, Boolean.TRUE);
viewer.setProperty( ICibApplication.PROPERTY_SHOWJPRINTDIALOG, Boolean.FALSE);
viewer.setProperty( ICibApplication.PROPERTY_THUMBNAILS_ENABLED, Boolean.TRUE);
}
private static void setFormProperties(JCibView viewer) {
viewer.setProperty( ICibApplication.PROPERTY_FORM_ENABLED, Boolean.TRUE);
/*
* Type: Integer: 1=red, 2=yellow, 3=magenta, 4=cyan,
* 5=gray, 6=green, 7=blue, 8=back.
* Default: 7
*/
viewer.setProperty(ICibApplication. PROPERTY_DEFAULT_FORM_HIGHLIGHTING_COLOR, 6);
/*
* Type: Integer: 0-255
* Default: 100
*/
viewer.setProperty(ICibApplication. PROPERTY_DEFAULT_FORM_HIGHLIGHTING_COLOR_TRANSPARENCY, 75);
/* * Type: Boolean
* Default: true
*/
// viewer.setProperty(ICibApplication. // PROPERTY_FORM_SIGNED_LOCK_ENABLED, Boolean.FALSE);
}
private static void setSignProperties(JCibView viewer) {
/* * Type: Boolean
* Default: false
*/
viewer.setProperty(ICibApplication. PROPERTY_SIGN_ENABLED, Boolean.TRUE);
/* * Type: Boolean
* Default: true
*/
viewer.setProperty(ICibApplication. PROPERTY_SIGN_FREE_SIGN_ENABLED, Boolean.FALSE);
/* * Type: String
* Default: ""
*/
viewer.setProperty(ICibApplication. PROPERTY_SIGN_PAD_PROVIDER, "signotec-signpad");
/*
* Type: String
* Default: ""
*/
viewer.setProperty(ICibApplication. PROPERTY_SIGN_PAD_SIGNATURECERTIFICATE, "MyCompanyCert.p12");
/*
* Type: String
* Default: ""
*/
viewer.setProperty(ICibApplication.
PROPERTY_SIGN_PAD_SIGNATUREPRIVATEPASSWORD, "MyPrivatePassword");
/*
* Type: String
* Default: ""
*/
viewer.setProperty(ICibApplication.
PROPERTY_SIGN_PAD_HARDWARELICENCE, "MyHardwareLicense");
/*
* Type: String
* Default: ""
*/
viewer.setProperty(ICibApplication. PROPERTY_SIGN_PAD_SIGNAPILICENCE, "MySignApiLicense");
/* * Type: Boolean
* Default: true
*/
// viewer.setProperty(ICibApplication. // PROPERTY_SIGN_NOT_FILLED_FORM_WARNING, Boolean.FALSE);
/* * Type: Integer
* Default: 3000 Bytes
*/
viewer.setProperty(ICibApplication. PROPERTY_SIGN_REQUIRED_SIZE, 1000);
/* * Type: String * Values: 1 = linksbündig, 2 = zentriert, 3 = rechtsbündig
* Default: 2 = zentriert
*/
viewer.setProperty(ICibApplication. PROPERTY_SIGN_SIGNATURE_ALIGNMENT, 2);
// Generate DigSig fields (RTF case)
viewer.setProperty("UseDigitalSignatureWidgets", 1);
viewer.setProperty("NeedAppearancesSignatureWidgets", 0);
}
private static void setCommandLineProperties( JCibView viewer, String[] args) {
// set properties which were set via command line
if (args.length == 0)
return;
for (int i = 0; i < args.length; i++) {
String argument = args[i];
if (argument == null)
continue;
// ignore tracing, it is set to true by default
if (argument.equals("-t"))
continue;
// a property is set as "-propertyname value" // or as "inputfile"
if (argument.startsWith("-")) {
viewer.setProperty(argument.substring(1), args[i+1]);
i++;
} else {
viewer.setProperty(ICibApplication. PROPERTY_INPUTFILE, args[i]);
}
}
}
}