Better PDF Viewer Annotator for Oracle IPM

posted Jun 14, 2013, 9:06 AM by Leila Holmann   [ updated Dec 11, 2013, 6:55 AM ]

Qoppa Software offers a standalone PDF renderer and annotator for Oracle® Webcenter Content Imaging, formerly known Oracle Imaging and Process Management (Oracle I/PM).

Our Oracle IPM PDF renderer is faster and more reliable than the built-in Oracle IPM viewer and can be used as an alternative or a substitution. And our licensing is affordable when compared to Oracle AutoVue.

It is based on our Java PDF viewing and annotating component, jPDFNotes, which is java based, thus cross-platform and allows to display PDF documents on any operating system: Windows, Mac, Linux or Unix.

Annotations are fully compatible with the xml format supported by Oracle IPM and can be read and saved from the database.

Read more information about our Oracle IPM PDF and Image Viewer.

Please contact us if you would like to schedule a demo.

Related: PDF Viewer for Oracle Forms

Configuring webnotes with a config xml file

posted Apr 8, 2013, 7:18 AM by Leila Holmann   [ updated Sep 25, 2013, 10:20 AM ]

Q: How can I configure the sample applet PDFWebNotes that Qoppa provides as a sample in the webnotes.jar?

A: You can configure the applet through a config.xml file by adding it to the applet parameter tag of the HTML:

The config.xml file can be used to customize any of our 3 sample applets PDFWebViewer, PDFWebNotes and PDFWebEditor.

See a live applet using the config.xml file. You can right-click and choose "View Page Source" to view the source of the HTML applet.

Key: XML elements in bold, XML attributes in non-bold italics.

·         QConfig – Root Element

o   Toolbar – Toolbar options

§  AddTextStamp – Add a button to the annotation toolbar to start a rubber stamp annotation created from text

·        Icon URL to the icon to use for the button on the toolbar

·        Text – The text to use in the stamp

·        Color – The color of the text and border in hexadecimal, for instance #FF0000 for red

·        Rotation – Flag indicating the rotation in degrees for instance 60 for 60 degrees.

·        Sticky – (true | false) – Flag indicating if this tools should be sticky

·         Scale – Number indicating the scale for instance 50 for 50%

§  AddImageStamp – Add a button to the annotation toolbar to start a rubber stamp annotation created from an image

·        Icon - URL to the icon to use for for the button on the toolbar

·        Image – URL to the image to use for the rubber stamp

·        Rotation – Flag indicating the rotation in degrees for instance 60 for 60 degrees.

·        Sticky - (true | false) – Flag indicating if this tools should be sticky

·        Scale – Number indicating the scale for instance 50 for 50%

§  AddSeparator – Add a separator to the annotations toolbar

§  RubberStamps – Configure the Rubber Stamps drop down menu

·         AddTextStamp – Add an entry to the rubber stamp drop down menu to start a rubber stamp annotation created from text

See above for options

·         AddImageStamp – Add a button to the annotation toolbar to start a rubber stamp annotation created from an image

See above for options

·         RemoveStamp – Remove one of the standard rubber stamps, using the rubber stamp title

o   Title – The title of the rubber stamp in the default drop down menu.

·         AddSeparator – Add a separator to the rubber stamp drop down menu

§  RemoveButton – Remove a button from any of the toolbars

·         MethodNameThe name of the method in one of the annotation toolbar classes to call to get the button in the toolbar.  The applet will then call that buttons setVisible() method to hide the button.

i.e. getjbAttachFile

o   Save – Save Options

§  SaveURL – The URL of the script to send the PDF content to when the user clicks on the Save button.  This URL should point to a script that will receive a multi-part POST message with the file contents in it, for instance /scripts/upload.php for a PHP script but it could also be the URL of an ASP page, of an ASP.NET script or of a Servlet.

§  SaveFormat – (PDF | FDF | XFDF) - The format to use in saving.  Use this attribute to save only the annotations to the server, instead of the full document.

§  SaveFileName – Use this name as the file name when saving the file.

§  SetCFSession – (true | false) – Set the ColdFusion session ID as part of the POST message when saving a file back to the server. 

If this variable is set to true, then the HTML should include two parameters:

CFID – The ColdFusion session ID
CFTOKEN – The ColdFusion Token

§  SetJavaSession – (true | false) – Set the Java session ID as part of the POST message when saving a file back to the server.

If this variable is set to true, then the HTML should include an additional parameter:

JSESSIONID – The Java session ID.

o   Key – Set the key.  The contents of this element will be used to call the setKey() method in the PDFNotesBean.

o   Open – Open files on startup

§  PDFURL – URL to the PDF document to load.

·         MergeFDF – URL to an FDF file to merge into the PDF at load time.

·         LockAnnotations – If present, lock the current annotations so that they cannot be modified.

o   Notes – Notes options

§  NewNotesLayer – If present, jPDFNotes will create a new layer and insert all new annotations into this layer.

·         LayerName Name of the new layer.

§  SaveNewOnly – If present, jPDFNotes will only save new annotations when saving the document.

§  EnableLayerExport – If present, jPDFNotes will display an “Export Layer” menu when the user right clicks on a layer in the layer list.

·         ExportURL – The URL to send the annotation information when a layer is exported.

Contact us if you need help setting up your config.xml file.

What is jPDFNotes?

posted Oct 15, 2012, 1:13 PM by Leila Holmann   [ updated Sep 25, 2013, 11:14 AM ]

jPDFNotes is a PDF Reader / Annotator / Form Filler / Digital Signer for Java.

It is a Java Swing component to view and markup PDF documents with all kind of graphical or markup annotations as well as fill interactive PDF forms and sign PDF documents.

jPDFNotes is just the component but it can be run in different contexts, including in a standalone desktop application as well as inside an applet inside a standard web browser. 

We provide live sample PDF applets to show how jPDFNotes can be used to annotate PDF documents and fill forms in the browser. These applets implement a lot of functionality to help our customers get started, and we provide the source code for the applets so that our customers can customize them to their needs.

Exporting and Merging PDF annotations in FDF and XFDF format

posted Oct 15, 2012, 12:29 PM by Leila Holmann   [ updated Oct 21, 2013, 1:50 PM ]

By default, jPDFNotes saves annotations within the PDF document. We are compliant to the PDF format specs, so all annotations created by jPDFNotes are usable by other PDF applications, and vice-versa.

The PDF format also defines two other file formats to store annotations separate from the PDF document, they are FDF and XFDF.

jPDFNotes can save the annotations in a document to FDF or XFDF formats:

PDFNotesBean bean = new PDFNotesBean();
bean.loadPDF ("c:\\test.pdf");

// export annotations as an XFDF file (can also export to output stream)

bean.getMutableDocument(). exportAnnotsAsXFDF("c:\\annots.xfdf");

// export annotations as an  FDF file (
can also export to output stream)
bean.getMutableDocument(). exportAnnotsAsFDF("c:\\annots.xfdf");

jPDFNotes can also read annotations and merge into a document from FDF and XFDF:

// import annotations from XFDF from a file (can also read from input stream)

// import annotations from FDF from a file (can also read from input stream)

The sample applet that we provide with jPDFNotes, PDFWebNotes, offers convenient ways (no coding needed) to merge  annotations from external files as well as save annotations only back to the web server.

Merging annotations into a PDF document on load using PDFWebNotes

Two of the parameters that PDFWebNotes can take on startup are:

MergeFDF – A URL to annotations in FDF format to merge into the document on load.

MergeXFDF – A URL to annotations in XFDF format to merge into the document on load.

PDFWebNotes will first load the PDF document, and then, if either of these parameters are present, PDFWebNotes will read the annotations from the URLs and then merge the annotations in the PDF document that was just loaded, essentially a real-time merge that is transparent to the end user.

Exporting and saving annotations from a PDF document using PDFWebNotes

To save annotations only (and not the PDF document) in these formats requires some entries in the Config.xml file that can be passed to PDFWebNotes. Under the root element of the config.xml file, there can be an element called “Save” to configure save options. This sample file config.xml attached below tells PDFWebNotes to save annotations only using FDF as the save format.

When the user presses the save button on the toolbar, PDFWebNotes will get annotation data from the document, create FDF content and then send that to the SaveURL.

Read more about how to customize the applet.

Compare two PDF documents side by side with loupe

posted Apr 23, 2012, 7:05 AM by Leila Holmann   [ updated Oct 9, 2013, 12:02 PM ]

Q: Can jPDFNotes, Qoppa's Java PDF markup component, be used to compare 2 PDF documents side by side? Our customers are architectural and engineering professionals who need to examine small details in a blueprints and drawings.

A: Qoppa's jPDFNotes comes with a side by side comparison component which lets you compare 2 PDF documents in a synchronized view (synchronized scrolling down the documents). Details can be carefully examined using the synchronized loupe tool.

This components allows to markup the 2 documents with all kind of PDF annotations including sticky notes or cloud annotations.

This tool is useful in a number of industries such as printing, graphics, electronics, and biology.

View Live Applet Demo and download jar files.

Side panels visibility: Attachments, Thumbnails, Bookmarks, Signatures, Comments

posted Mar 7, 2012, 7:45 AM by Leila Holmann   [ updated Mar 7, 2012, 7:46 AM ]

How can I hide or show side panels / tabs (such as Thumbnails, Bookmarks, Signatures or Comments) in the left split panes in the PDFNotesBean?

// Use com.qoppa.pdfViewer.InitialViewSettings to customize the
// default behavior when opening a document. For example, to always

// open the document with the panels closed, ignoring the document's

// setting:


InitialViewSettings: This class maps the PDF specs for the initial view. You can only choose which page mode to use.

// Use com.qoppa.pdfViewer.panels.PDFPanel to programmatically show
// and hide individual panels, and also to specify which panels are

// active when a document loads. For example, to never show the

// signature panel, even if the document contains

// signatures:


// Use the split policy to never show any of the panels or buttons.
// This method affects all documents


// Use the set split visible method to hide panels and buttons on a given document

Non-Latin character in form fields

posted Mar 2, 2012, 8:21 AM by Leila Holmann   [ updated Mar 2, 2012, 10:24 AM ]

Q: When I type in non-Latin characters in interactive PDF form fields, some characters vanish or disappear. Why is that so? What can I do to fix this?

A: The problem with non-Latin characters (Greek, Russian, Arabic, Hebrew) disappearing after being entered in an interactive text field has to do with the way that fonts and characters are stored in a PDF document. The PDF format was designed before Unicode, so characters are encoded in a single byte. Therefore the maximum numbers of characters defined in a font descriptor is 255. To use more than 255 characters, a string has to be broken up into sections with each section using a different font and character encoding definition.

When the characters typed inside the form fields are all defined in the font descriptor inside the PDF document, jPDFNotes and jPDFViewer (Qoppa's java swing components) will work correctly. So for instance, if all Greek characters are defined in the font descriptor, filling interactive forms in Greek will work perfectly.

But sometimes the font descriptor will only define the Latin character set. In this case, jPDFNotes and jPDFViewer will not be able to display the non-latin characters. Unfortunately, we don’t have the technology yet in jPDFViewer to break up a string in different sections. We are only able to work with the characters that are already defined in the font used for a field. When Adobe Acrobat works with fields, it actually creates new font definitions as the characters are entered, so it can handle any range of characters. i.e. I can enter Latin, Greek and Chinese characters in the field and Acrobat will create three separate font definitions for this one field. We plan to implement a similar mechanism in jPDFViewer in the future, but this is a very complicated feature, so it might be some time before we are able to release.

The solution for now for our customers is to make sure that all the characters are defined in the font associated with the interactive form fields.

Note that, for cjk fonts, the issue is currently the same but we will be able to resolve the issue in a simpler way and sooner.

jPDFNotes Localization Languages

posted Nov 14, 2011, 9:51 AM by Leila Holmann

jPDFNotes comes in 5 languages: English, French, German, Italian, Spanish. jPDFNotes being built on top of our viewer-only component jPDFViewer, the localization for jPDFNotes works the same as for jPDFViewer. See our entry in the jPDFViewer knowledge base. The only differences is that there are 2 files to localize: AND The label files can be found inside the jPDFNotes.jar file.

jPDFNotes java API

posted Nov 10, 2011, 7:18 AM by Leila Holmann   [ updated Jul 19, 2013, 9:38 AM ]

Q: Where can I find jPDFNotes javadoc API?

A: You can find the API specification for the latest version of our library jPDFNotes on our website at this link. jPDFNotes is a java bean to display and annotate PDF documents and fill interactive PDF forms in Java applications and applets.

jPDFNotes component to implement a PDF workflow review cycle

posted Nov 8, 2011, 11:08 AM by Leila Holmann   [ updated Sep 14, 2012, 12:53 PM ]

Q: The way we have implemented jPDFNotes the document is passed around a number of reviewers on a “workflow”. Each reviewer can add notes. Is it possible to “lock up” previous markups, so that new markup data can be added but previous markup data can not be modified?

A: Yes it can be done, but it will require a bit of programming in your implementation:

First, an explanation of the project and its setting: The jPDFNotes product is a component that can be integrated into a Java application or applet. In your case, it was deployed inside an applet (that runs in a web browser) using one of our sample applets. We provide sample applets, with source code, so that our customers can get started quickly and can then customize them to implement logic that is relevant to their system, such as what you describe.

Aside from being a visual component, jPDFNotes also provides a programming API so that when our customers customize their implementation, they can make calls to the API to do a number of functions on PDF documents and their content.

Annotations in a PDF have a flag to mark them as locked or read-only. In your applet, you can add code to loop through all the annotations in the document and mark them as locked or read-only. Once they are marked like this, a user cannot modify or delete the annotations.

This can be done either at the time that a user saves the document back to the server or at the time that a user opens a document that already has annotations on it.

You can also setup the logic, depending on the permissions for each user for instance, so that you only do this based on certain conditions.


1-10 of 14