ViewSign Professional SDK Documentation FAQ

    From ViewSonic User Guide Database

    How do I skip the manual calibration for Wacom DTU devices

    Please calibrate the DTU once and then you find in c:\Users\USERNAME\AppData\Roaming\WTablet\ two files tablet.dat and wacom.dat which have to be roll-out during the DTU installation to avoid recalibrating on every single station.

    How do I show another advertisement screen than the default advertisement screen?

    You can either enable transitions to other advertisement screens by placing buttons, or by using the SDK command ShowAdvertismenetScreen(string screenId)

    How can I prevent the operator from clicking buttons via the Screen Monitor?

    In the _global.xml, there is a config entry ScreenMonitor\DisabledButtons, where you can configure buttons which can not be clicked from the ScreenMonitor.

    The following would disable all "accept" buttons in all sign dialogs (pdf sign dialog, enroll sign dialog, custom sign screen dialog)";".

    <ScreenMonitor showInTray="true">
       ...
       <DisabledButtons>sigAccept;enrollAccept;custSigAccept</DisabledButtons>
     </ScreenMonitor>
    

    Please note that in Citrix/RDP/Horizon scenarios, this must be configured on the thin client side.

    My usecase requires a manual confirmation of every taken customer signature. Is this possible?

    This is possible by setting operatorCheckSignature to true. This parameter is part of the Kiosk API methods "WorkstepOpen" and "PdfLoad". When this feature is enabled, the Kiosk SDK will show a dialog to the operator after a captured signature from the customer. The operator is then able to accept or reject the signature.

    How can I decrease the CPU consumption of the Screen Monitor?

    In the _global.xml, there is a config entry ScreenMonitor\IntervalInMs, where you can set the update interval in milliseconds. When you increase the interval (decrease the refresh rate), the CPU consumption will be lower. Furthermore, the config entry ScreenMonitor\RenderingMode can be set to LowQuality for a further performance improvement.

    How can I manage centralized advertisements?

    You have to redirect the location of the layout configuration xml (inside _global.xml) and all paths to images, videos, .. inside the layout configuration xml to a network share.

    Example: configure the layout for a DTU 1031 (1280x800) to a network share \\myCompanyNetwork\kioskConfigShare.

    1. Copy kioskConfig_1280_800.xml and all used videos and images to \\myCompanyNetwork\kioskConfigShare
    2. Inside _global.xml, map to the copied kioskConfig_1280_800.xml:
    ...
    <KioskConfigs>
       ...
       <Config width="1280" height="800">\\myCompanyNetwork\kioskConfigShare\kioskConfig_1280_800.xml</Config> //if the signing screen uses 1280x800, this configuration will be used
       ...
    </KioskConfigs>
    ...
    
    1. Inside \\myCompanyNetwork\kioskConfigShare\kioskConfig_1280_800.xml, redirect all image paths to the network share, e.g.:
    <slideShow x="120" y="10" width="784" height="748" backColor="White" >
       <image path="\\myCompanyNetwork\kioskConfigShare\PromoScreen1.jpg" intervalInSeconds="5"/>
       <video path="\\myCompanyNetwork\kioskConfigShare\SIGNificant Server.avi" />
    </slideShow>
    

    How can I implement different branches in my survey?

    You can use multiple custFormShowScreen buttons on one CustomFormScreen which direct to different screens.

    Sample:

    <CustomFormScreen id="screen1"  backColor="...">
      ...
      <button ...>
        <action type="custFormShowScreen" parameter="screen2.A"/>
      </button>
      <button ...>
        <action type="custFormShowScreen" parameter="screen2.B"/>
      </button>
    </CustomFormScreen>
    <CustomFormScreen id="screen2.A"  backColor="...">
      ...
    </CustomFormScreen>
    <CustomFormScreen id="screen2.B"  backColor="...">
      ...
    </CustomFormScreen>
    

    How can I enable or disable the accept button?

    When using local PDFs, the accept button is shown when the enableAcceptButton parameter of PdfShow is set to true, and all required signature fields are signed.

    When using a workstep, the accept button is shown when the workstep policy allows finishing and all required workstep tasks are completed.

    My Kiosk SDK integration does not connect to the Kiosk. Why?

    When you try to connect the Kiosk SDK integration library (xyzmo.Sdk.dll or xyzmo.Sdk-VERSION.jar) to the Kiosk SDK, the Kiosk SDK (SIGNificant Kiosk SDK.exe) must be started first. The integration library will not start the Kiosk SDK. Furthermore, the integration library and the Kiosk SDK must be from the same version. E.g. a xyzmo.Sdk.dll 1.3.69.0 will not be able to connect to Kiosk 1.3.93.0.

    How can I replace images like advertisement images on the fly?

    With the API command OverrideResource, every image in a screen XML file can be replaced during run time. To replace e.g. a resource with relative path "Resources/Kiosk/SlideShowDefault/PromoScreen1.jpg" on the fly, call OverrideResource("Resources/Kiosk/SlideShowDefault/PromoScreen1.jpg", imageData). This works for all used images and videos in all screens (like advertisement slideshow images). With ClearOverrideResourceCache the resource replacements are removed.

    <AdvertisementScreen id="adSlideShow" backColor="Black">
        <slideShow x="120" y="10" width="1040" height="780" backColor="White" >
            <image path="Resources/Kiosk/SlideShowDefault/PromoScreen1.jpg" intervalInSeconds="5"/>
    ...
    

    Please note that the replacements arent' used immediately, instead they are used after the first "fresh" use of a screen after a replacement has been set. E.g. if you replace an advertisement image while advertisements are shown, the new images are used after a ShowAdvertisementScreen call.

    How can I reduce the amount of data transfered because of the PDF images?

    Usually, all pages of a PDF/workstep are preloaded in background in this order:

    1. first shown page (usually page 1)
    2. pages with a signature field
    3. pages before/after a page with a signature field
    4. all remaining pages

    The preloading of the "remaining pages" can be disabled in _global.xml:

    PdfPages\PreloadAll
    

    Furthermore, the image quality of the images can be reduced in _global.xml:

    PdfPages\RenderResolutionFactor
    
    • e.g. 1.0 means that the pages is rendered in the exact required size (optimal quality)
    • e.g. 0.75 means that the pixel width/height of the rendered image have just 75 % of the optimal quality size

    How can I add confirmation dialogs to the accept or reject document buttons?

    This can be done using custom screens:

    1. Open workstep with openMode set to FinishRejectViaApiOnly (skip when working on a local PDF)
    2. When an event PdfAccept or PdfReject is raised with parameter2=ui, accept/reject in the kiosk UI was clicked
    3. Show a custom dialog with CustomDialogShow and wait for a button click (event CustomDialogButtonClick). Optionally, you can also use CustomFormScreenShow
    4. Depending on the click result, finish workstep (DocumentFinish) or reject workstep (DocumentReject) or show a page of the workstep (DocumentShowPage), ...

    In my integration, the Kiosk SDK SOMETIMES fails to start. Why?

    If the Kiosk SDK sometimes fails to start with logs like this:

    Critical error - unable to start
    ...
    

    it is often caused by the fact that the Kiosk SDK was started before the device driver was loaded properly. To handle such scenarios, you can make use of the following:

    • The Kiosk SDK sets various result codes when it terminates. You can let the code which is starting the Kiosk SDK check the result code, and perform a retry of the startup when it fails.
    • Normally, the Kiosk SDK shows an error dialog before it terminates when startup fails. If you want to skip this error dialog, you can use the /silent command line switch.

    How to configure Kiosk SDK to work in an environment with user switching?

    When Kiosk SDK is started, it consumes a local named pipe for communication. This does as a result prevent Kiosk SDK from being executed multiple times in parallel on same client PC. If your environment is used with user switching - or if an activity (windows screensaver) performs automatic locking of the workstation while a document is shown - you will get some errors (e.g. next user logs on, log on script tries to start Kiosk SDK but software alerts that Kiosk SDK is already running). Therefore it might be required to terminate Kiosk SDK when user logs of or when user locks the workstation.

    An automatic termination of Kiosk SDK in case of logoff of the user can be configured using Windows' Group Policies (GPO).

    • To define a GPO, you need a script which is stored in the windows Group Policy Logoff folder (C:\Windows\System32\GroupPolicy\User\Scripts\Logoff\). In this folder (which you have to create manually if it does not yet exist), create a "kiosk-stop.bat":
    taskkill /IM "SIGNificant Kiosk SDK.exe" 
    
    • Run the "Group Policy Editor" and define a group policy for User Logoff, to run this script.

    An automatic termination of Kiosk SDK in case of workstation lock can be configured using Microsoft Windows Task Scheduler.

    • Run the Task Scheduler application
    • Right-Click on the Task Scheduler Library and create a new task ("Create Task...")
    • specify a name and description
    • On tab "General", select option "Run only when user is logged on"
    • On tab "Trigger", select "on workstation lock"
    • On tab "Action", select the batch file created for the GPO.

    Configure a 2nd script "on workstation unlock" which starts Kiosk SDK application. As a result, the advertising mode should show up after unlocking a work station.

    I only have one screen available, can I still use Kiosk?

    In Version 2.1, we included a new configuration node <UsesSingleScreen values="0;1">0</UsesSingleScreen> in _global.xml. By enabling it (setting value to '1'), the Kiosk will be able to get executed on only one screen with granting the user permission to switch between programs.

    In this mode, you'll also be able to include a 'minimize' as well as a 'close' button in the UI:

    &lt;!-- Sample for adding a 'close' button in a screen in a kioskConfig_xxx_yyy.xml --&gt;
    &lt;button x="0" y="0" width="35" height="35" text="X" textColor="White" font="button" backColor="Red" hTextAlign="Center" vTextAlign="Center"&gt;
        &lt;action type="closeKiosk" parameter="" /&gt;
    &lt;/button&gt;
    
    &lt;!-- Sample for adding a 'minimize' button in a screen in a kioskConfig_xxx_yyy.xml --&gt;
    &lt;button x="35" y="0" width="35" height="35" text="_" textColor="White" font="button" backColor="Blue" hTextAlign="Center" vTextAlign="Center"&gt;
        &lt;action type="minimizeKiosk" parameter="" /&gt;
    &lt;/button&gt;
    

    KioskSDK Web Driver is running and works in Microsoft Edge, but it cannot be reached from Mozilla Firefox

    During installation of WebDriver, we do register the self-signed SSL certificate in Windows Certificate Store. Mozilla Firefox has its own certificate store. Please open https://localhost:4343/signalr/hubs in Firefox and allow accessing the site. This will add the required self-signed SSL certificate to the Firefox certificate store.

    NOTE: since Firefox 49, Firefox can be configured to also check the Windows Certificate Store. When doing this, there's no need to import the certificate to the Firefox Certificate Store any more: https://support.mozilla.org/en-US/kb/setting-certificate-authorities-firefox (Windows Enterprise Support; security.enterprise_roots.enabled)

    Other ways for configuring Firefox: https://wiki.mozilla.org/CA:AddRootToFirefox