Join us for an engaging webinar, as we unravel the potential of AI for revolutionizing document management.
Watch Now
Enable your employees to remain productive throughout the document management process.
Read More
Learn how SmartZone uses a regular expression engine integrated into the recognition engine to achieve the best possible accuracy on data that can be defined by a regular expression.
Docubee is an intelligent contract automation platform built to help your team success
In the PrizmDoc Viewer, what are the two different ways to load annotation layers?
PrizmDoc has two options for loading annotations, the “My Annotations” pane and the “Annotations for Review” pane.
The “My Annotations” pane is used to load a single annotation layer for editing. You can add, delete, or make changes to annotations and then save those changes using the “My Annotations” pane.
The “Annotations for Review” pane is used for viewing annotations. You can load as many annotation layers for viewing as you would like. You cannot interact with annotations loaded in this way, but you are able to make comments on them. You can toggle between any of these layers to hide them. You can also merge these annotations to the currently loaded annotation layer from “My Annotations”.
For more information see our documentation here: https://help.accusoft.com/PrizmDoc/latest/HTML/Annotation_Layers.html
Today we noticed that when trying to start the Prizm service, it hangs for a few minutes and then displays an error: “Service Failed to start in a timely fashion”, and the service remains stopped.
The watchdog.console.log shows “DieError: Configuration error, failed to parse the configuration file”.
How can we fix this?
This issue typically happens when the server was not shut down properly, and some of the PrizmDoc files have become corrupted.
To resolve the issue, take the following steps: Make a backup of your PrizmDoc configuration files. Uninstall and then re-install PrizmDoc. Verify the service is running. Stop the service, restore backed-up configuration files. Restart Prizm service.
To resolve the issue, take the following steps:
When printing in PrizmDoc, the bottom of my document is being cut off. Why is this happening?
When I download the document as PDF, I do not lose parts of the document. However, if I print the document to PDF, I lose some data off the very bottom (maybe an inch or so).
In PrizmDoc, the page is to "fit to width" onto the paper by design. The bottom of the page will be cut off in cases where the length of the page extends further than the length of the paper. If you’re printing with Letter size paper (the default), it presumes a document that measures 8.50 by 11.00 inches. Suppose your document measures 8.50 x 13.00 inches. That additional 2 inches will be cut off during printing. This is why you may lose parts of the document while printing, but not if you download the document since it’s downloading the document as-is.
To prevent this from happening, select a paper size large enough for your document (in the viewer print dialog and the system print dialog). Using the previous 8.50 x 13.00 inch example, you can select "Legal" size paper, which measures 8.50 x 14.00 inches, and would be long enough to support that document.
You could also modify your viewer to add a custom paper size if this fits your use case. Below is some sample code demonstrating this in our Viewer sample. You would need to enter your own custom paper sizes.
https://www.accusoft.com/code-examples/printing-custom-paper-sizes/
Changes to printTemplate.html:
/*custom */ .portrait .custom.page { width: 11in; height: 11in; margin: 0 auto !important; } .portrait .custom.pageIE { width: 9.5in; height: 9.5in; margin: 0 auto !important; } .portrait .custom.pageSafari { width: 8.9in; height: 8.9in; margin: 0 auto !important; } .portrait .custom.nomargins { width: 11in !important; height: 11in !important; } /* even without margins, Safari enforces the printer's non-printable area */ .portrait .custom.nomargins.pageSafari { width: 9.32in !important; height: 9.32in !important; } .landscape .custom.page { height: 11in; width: 11in; margin: 0 auto !important; } .landscape .custom.pageIE { height: 9.05in; width: 9.05in; margin: 0 auto !important; } .landscape .custom.pageSafari { height: 8.4in; width: 8.4in; margin: 0 auto !important; } .landscape .custom.nomargins { height: 11in !important; width: 11in !important; } .landscape .custom.nomargins.pageSafari { height: 9.32in !important; width: 9.32in !important; } /*custom end*/
Changes to printOverlayTemplate.html (last line "Custom" is the only change):
<select data-pcc-select="paperSize" class="pcc-print-select"> <!-- US and International--> <option value="letter"><%= paperSizes.letter %></option> <option value="legal"><%= paperSizes.legal %></option> <option value="tabloid"><%= paperSizes.tabloid %></option> <option value="foolscap"><%= paperSizes.foolscap %></option> <!-- A formats--> <option value="a3"><%= paperSizes.a3 %></option> <option value="a4"><%= paperSizes.a4 %></option> <option value="a5"><%= paperSizes.a5 %></option> <!-- Architectural--> <option value="a6"><%= paperSizes.a6 %></option> <option value="a"><%= paperSizes.a %></option> <option value="b"><%= paperSizes.b %></option> <option value="c"><%= paperSizes.c %></option> <option value="d"><%= paperSizes.d %></option> <option value="e"><%= paperSizes.e %></option> <option value="e1"><%= paperSizes.e1 %></option> <option value="custom">Custom</option> </select>
Additionally, if you would like to change the default selected page size you can add selected to it as follows:
selected
<option value=\"a4\" selected><%= paperSizes.a4 %></option>
We wanted to upgrade our previous version of PrizmDoc to the most recent release. However, when trying to install the latest version, the installation is failing. What do I need to do to get the latest version installed?
Typically, this issue may occur if you are upgrading from an older major version to a new major version, such as from PrizmDoc 11 to PrizmDoc 12 or PrizmDoc 13. If you are upgrading from one minor version to another, such as PrizmDoc 13.1 to PrizmDoc 13.6, then it should be seamless.
If you do have issues in either circumstance, it is usually due to files, folders, or registry settings that were left behind from the older version.
In order to fix the installation, please follow the process below to ensure the previous version is completely removed.
Ensure previous installation folders are deleted:
\Prizm and \ProgramData\Accusoft.
Back-up your Windows registry, and then click on Start > Run, and type in regedit
Click Edit and select Find, and then type Prizm
When it finds a match, right-click on the registry key and select Delete
Click F3 to find the next match, and repeat Step 4 for each key.
F3
Repeat Step 5 until the search comes back with “Finished Searching Registry”
Reboot Server and attempt to re-install.
How accurate is PrizmDoc Viewer’s auto-redaction process? Is there any estimate of the percentage of matches that it will fail to redact?
If you’re performing auto-redaction as described in our documentation, then all matches for the input regular expression will be redacted in the final document. However, it’s difficult to express that confidence in the form of a percentage. PrizmDoc is subjected to a suite of automatic testing to ensure that its services are behaving as intended, including redactions. We never release a new version unless it passes 100% of those tests.
That being said, the primary way that inaccuracy could enter the system is if you’re attempting to redact scanned documents that have been OCRed. In this case, it’s a matter of your OCR software’s accuracy, rather than the accuracy of PrizmDoc’s redaction process. If the searchable text of the document doesn’t accurately reflect the visible text on the page (for example, if a smudged “discovery” is incorrectly recognized as “disccvery”), then the auto-redaction will be unable to recognize it due to the incorrect input it has been given. This isn’t a problem if the documents were not OCRed.
In PrizmDoc Viewer, can I delete a saved annotation collection? When I make annotations on a document, I can save them and give them a name. Then if I come back to the document later, I can access my saved annotations, add new ones, and delete individual ones, but I don’t see a way to delete the collections themselves, is this possible in PrizmDoc?
Deleting the annotation references is possible, though our Viewer sample does not have a built-in way to delete them. This is so individual users cannot delete annotations meant for a larger audience. You can add the feature to your project by using our Markup Layers API:
DELETE /MarkupLayers/u{viewingSessionId}/{layerRecordId}
We are planning to upgrade our PrizmDoc Server and PrizmDoc Client to the latest major version. What is the best practice for doing so?
For best results, you will want to follow the instructions below to ensure the cleanest upgrade of the newest version:
NOTE: Before starting, make a backup of the following configuration files for use as reference when re-configuring your new version installation. This should be done before the PrizmDoc installer is run, as all configuration files will be replaced with new ones (resetting them to their default configuration).
Prizm Server Configuration: prizm\prizm-services-config.yml Prizm Client Configuration (Windows): prizm\pas\pcc.win.yml Prizm Client Configuration (Linux): /usr/share/prizm/pas/pcc.nix.yml ServiceHost Configuration: prizm\PCCIS\ServiceHost\pcc.config
Prizm Server Configuration: prizm\prizm-services-config.yml
Prizm Client Configuration (Windows): prizm\pas\pcc.win.yml
Prizm Client Configuration (Linux): /usr/share/prizm/pas/pcc.nix.yml
ServiceHost Configuration: prizm\PCCIS\ServiceHost\pcc.config
How To:
Linux Prizm/PAS Service Uninstall:
https://help.accusoft.com/PrizmDoc/latest/HTML/webframe.html#linux-uninstall-prizmdoc-serve.html
https://help.accusoft.com/PrizmDoc/v13.10/HTML/webframe.html#pas-linux-uninstallation.html
Download the latest version of PrizmDoc for your operating system from https://www.accusoft.com/products/prizmdoc-suite/prizmdoc-viewer-builds/
Install PrizmDoc Server first and then the PrizmDoc Client.
At the end of the server installation, the install may request a reboot.
Make a backup of your new configuration files as listed above.
Modify each of the new configuration files and make the same changes as you did in the older configuration files.
NOTE: Do not just replace the new configuration files with the old version configuration files, as new configurations may have been introduced in the new version and they would be lost.
NOTE: If either service fails to start with an error after modifying the configuration files, replace the configuration files with the original copy of the configuration files and try making the changes again.
NOTE: If you are using viewing packages and have an existing database, we provide additional scripts in the \prizm\pas\db folder to modify your existing database. For example, upgrading from PrizmDoc 12.x to PrizmDoc 13.x we provide an additional script addTenantId to add a new field to one of the existing tables.
\prizm\pas\db
addTenantId
I want the Thumbnail tab in PrizmDoc Viewer to be open by default. How can this be done?
A simple solution could be to simply implement a ‘click-on-the-button’ when you first open the Viewer, if you’re fine with the user being able to close the thumbnail pane:
$("[data-pcc-toggle=\"dialog-thumbnails\"]").click();
If you’d rather have the tab always open, in viewer.js there’s a function called toggleDialogs(opts) that checks for whether the thumbnail pane is being toggled through the opts.toggleID, and if so, adds openClass to the thumbDialog. You could modify this logic so that the thumbnail pane is permanently open.
viewer.js
toggleDialogs(opts)
opts.toggleID
openClass
thumbDialog
When I view a document on PrizmDoc Cloud and it hits a cached document, is a transaction still consumed?
What defines a transaction on PrizmDoc Cloud?
A transaction is defined as: a document viewed, a document converted, a document OCR function performed, a form detected, or an image compressed.
PrizmDoc Cloud considers it a transaction anytime any of these actions are performed, regardless of how they are carried out.
In some other viewers, there are highlights or markers that appear on the UI to indicate that annotations are available for a given page or document. Is there a way to implement this in PrizmDoc?
Sure can, you just need to make a MarkupLayerRecords request to determine if there are marks that pertain to the given Viewing Session. Keep in mind that documents don’t really have a specific set of annotations associated with them though — Markup IDs do, and you can specify any Markup ID you want when you create a viewing session:
MarkupLayerRecords
// Add rules to your CSS for the following classes. // The actual style information can be whatever you like. // // .mark-indicator { // background-color: gold !important; // } // // .marked-page-indicator { // background-color: gold !important; // } let pasUrl = "http://localhost/pas-service"; // Example PAS proxy URL let viewingSessionId = <%= viewingSessionId %>; // Example viewingSessionId let thumbnailButton = $(".pcc-icon-thumbnails"); let pageIndicatorsAdded = false; let thumbnailsClicked = false; let marksRetrieved = false; let markedPages = {}; async function addPageIndicators() { console.log("Attempting to add page indicators..."); if (thumbnailsClicked && marksRetrieved && !pageIndicatorsAdded) { console.log("Conditions met."); let wrappers = $(".pccThumbnailWrapper"); wrappers.each(function(index, wrapper) { if (markedPages[index]) { $(wrapper).addClass("marked-page-indicator"); } }); pageIndicatorsAdded = true; } else { console.log("Conditions not met"); } } thumbnailButton.click(function() { console.log("Thumbnails button clicked."); thumbnailsClicked = true; addPageIndicators(); }); async function apiCall(type, url, body = {}) { return await $.ajax({ "type": type, "url": url, "contentType": "application/json", "data": JSON.stringify(body) }); } async function createMarkIndicators() { let output = await apiCall("GET", `${pasUrl}/MarkupLayers/u${viewingSessionId}`); if (output.length > 0) { console.log("Found layers."); thumbnailButton.addClass("mark-indicator"); let layers = await Promise.all(output.map(function(element) { return apiCall("GET", `${pasUrl}/MarkupLayers/u${viewingSessionId}/${element.layerRecordId}`); })); layers.forEach(function(layer) { layer.marks.forEach(function(mark) { markedPages[mark.pageNumber - 1] = true; }); }); marksRetrieved = true; console.log("Marks retrieved."); addPageIndicators(); } else { console.log("No layers found."); } } createMarkIndicators();
My document appears to be loading incorrectly. Are there any troubleshooting steps that I can take?
First, confirm that this is a document-specific issue by trying other documents of the same file type or documents of the same file type with similar size characteristics and content.
Second, if the document is a Microsoft Office document and you are using LibreOffice as your backend renderer, you can compare the way that the document displays in PrizmDoc against the way the document displays in the copy of LibreOffice shipped with PrizmDoc (C:\Prizm\libreoffice\program\soffice.exe on Windows, /usr/share/prizm/libreoffice/program/soffice on Linux). To inquire about the Microsoft Office renderer plugin, which may resolve office document rendering issues, send an email to sales@accusoft.com.
C:\Prizm\libreoffice\program\soffice.exe
/usr/share/prizm/libreoffice/program/soffice
Third, reach out to a support technician at support@accusoft.com, as they will be able to quickly test how the document renders in the latest version of PrizmDoc, and consult the product engineers in the event that there is a rendering issue.
Have the following information handy, as it will help the support technician better assist you:
What version of PrizmDoc are you using?
What operating system are you using?
A PDF export or a screenshot of what you see in PrizmDoc, compared to a screenshot of how the document looks in its native file type viewer.
Log files that include the processing of the incorrectly loading document.
Any changes that you may have made to the PrizmDoc configuration files.
I need to store a unique ID with each of my marks. Is the ID returned by Mark.GetID() unique?
Mark.GetID()
The ID generated by Mark.GetID() is only unique for that instance of the viewing session (for example, if you refresh the page, the counter for mark IDs will reset to 1).
If you are saving your marks to markup layers using the SaveMarkupLayers() method, then each mark will have a unique ID generated which will be stored in the “uid” key in the markup layer JSON.
SaveMarkupLayers()
If you are saving your marks as XML, using the SaveMarks() method, then each mark’s unique ID will be stored in the key “nodeId”.
SaveMarks()
If you want to generate your own unique ID for your marks, you can include the code below in your viewer.js to generate a UUID. A UUID contains 122 randomly generated bits so you shouldn’t need to worry about any duplicate IDs:
function uuidv4() { return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) ) }
You can store this UID in the marks data using Mark.SetData("ID", uuidv4());.
Mark.SetData("ID", uuidv4());
You can then use Mark.GetData("ID"); to retrieve the ID at a later time.
Mark.GetData("ID");