From 00ba11896a73050fb2dd53b45463551c0710eba5 Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Wed, 29 Jul 2026 16:02:20 +0800 Subject: [PATCH 01/47] docs(faq): remove deprecated Print() API from print-images-from-viewer FAQ Print() was deprecated as of DWT v19.3 in favor of PrintEx(). Rather than presenting both with a deprecation note, drop Print() entirely and show only the current PrintEx() API, per review feedback on PR #1029. Co-Authored-By: Claude Sonnet 5 --- _articles/faq/print-images-from-viewer.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/_articles/faq/print-images-from-viewer.md b/_articles/faq/print-images-from-viewer.md index bf87f514..9c1f4b02 100644 --- a/_articles/faq/print-images-from-viewer.md +++ b/_articles/faq/print-images-from-viewer.md @@ -7,12 +7,11 @@ keywords: Dynamic Web TWAIN, Image Viewer, print breadcrumbText: Can I print images from the viewer? description: Can I print images from the viewer? date: 2021-12-09 11:34:50 +0000 -last_modified: 2022-06-10 04:40:03 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- # Image Viewer ## Can I print images from the viewer? -Yes, you can print the images from the viewer by exporting all image data in the buffer to a new browser window and use the browser's default feature to print images. This can be achieved by using the [Print](/_articles/info/api/WebTwain_IO.md#print){:target="_blank"} API. -Note: The Print API prints all the images on the viewer, you can use [PrintEx](/_articles/info/api/WebTwain_IO.md#printex){:target="_blank"} to print only selected images. +Yes, you can print the images from the viewer by exporting the image data in the buffer to a new browser window and use the browser's default feature to print images. This can be achieved by using the [PrintEx](/_articles/info/api/WebTwain_IO.md#printex){:target="_blank"} API, passing the indices of all the images in the buffer to print all of them, or just the selected ones to print a subset. From 36552c6eae24b5adc99c45eed8d5d2a8c29db2a5 Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Wed, 29 Jul 2026 16:03:40 +0800 Subject: [PATCH 02/47] docs(faq): fix HTTPUpload() arity in additional-form-fields FAQ HTTPUpload() requires indices/type/dataFormat before its callbacks; the sample called it with only 3 args (url + 2 callbacks). Since each image was already attached as its own form field via ConvertToBlob/ SetHTTPFormField, pass an empty indices array so HTTPUpload doesn't attach an extra file of its own. Fixes #1030 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/additional-form-fields.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/_articles/faq/additional-form-fields.md b/_articles/faq/additional-form-fields.md index e15c184f..f8e98873 100644 --- a/_articles/faq/additional-form-fields.md +++ b/_articles/faq/additional-form-fields.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Document Saving, additional form fields breadcrumbText: How can I send additional form fields with images to my server or database? description: How can I send additional form fields with images to my server or database? date: 2021-11-29 18:33:59 +0000 -last_modified: 2024-09-19 08:47:35 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- # Document Saving @@ -27,7 +27,7 @@ You can check out this Date: Wed, 29 Jul 2026 16:04:38 +0800 Subject: [PATCH 03/47] docs(faq): fix show-page-number FAQ to use updatePageNumberStyle Viewer.showPageNumber was deprecated as of v17.3 in favor of updatePageNumberStyle(), per _articles/info/schedule/deprecated.md. Fixes #1035 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/show-page-number.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/_articles/faq/show-page-number.md b/_articles/faq/show-page-number.md index e14cb791..98ab3217 100644 --- a/_articles/faq/show-page-number.md +++ b/_articles/faq/show-page-number.md @@ -7,16 +7,17 @@ keywords: Dynamic Web TWAIN, Image Viewer, show , page number breadcrumbText: How can I show page number on each image? description: How can I show page number on each image? date: 2025-04-17 17:43:22 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- # Image Viewer ## How can I show page number on each image? -You can set the [showPageNumber](/_articles/info/api/WebTwain_Viewer.md#showpagenumber){:target="_blank"} API to true to show the page number. +`Viewer.showPageNumber` has been deprecated since v17.3. Use [updatePageNumberStyle](/_articles/info/api/WebTwain_Viewer.md#updatepagenumberstyle){:target="_blank"} instead to show the page number. ```javascript -DWTObject.Viewer.showPageNumber = true; +DWTObject.Viewer.updatePageNumberStyle({ visibility: "visible" }); ``` **Note**: When [setViewMode](/_articles/info/api/WebTwain_Viewer.md#setviewmode){:target="_blank"} is set to -1 by -1 or [singlePageMode](/_articles/info/api/WebTwain_Viewer.md#singlepagemode){:target="_blank"} is true then this api will not work. From 7ea8e99fa1add8399109e4354ef3702131c335a5 Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Wed, 29 Jul 2026 16:05:14 +0800 Subject: [PATCH 04/47] docs(faq): fix method name and deprecation claim in support-wia-scanner-drivers FAQ - Migration table listed GetDeviceAsync() (nonexistent); the real method is GetDevicesAsync(), matching the link's own href. - WIATWAINSCANNER was described as "will continue to be supported" but Dynamsoft_Enum.md marks it deprecated since v18.2 in favor of WIASCANNER. Fixes #1036 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/support-wia-scanner-drivers.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_articles/faq/support-wia-scanner-drivers.md b/_articles/faq/support-wia-scanner-drivers.md index fad53515..c29ae31e 100644 --- a/_articles/faq/support-wia-scanner-drivers.md +++ b/_articles/faq/support-wia-scanner-drivers.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Capture/ Image Source, WIA breadcrumbText: How can I support WIA scanner drivers in my application? description: How can I support WIA scanner drivers in my application? date: 2023-05-25 04:19:02 +0000 -last_modified: 2024-09-19 08:47:35 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- # Capture/Image Source @@ -25,7 +25,7 @@ To compatible with both TWAIN and WIA 2.0, | New APIs (supports WIA) | Old APIs | |:-|:-| -| [GetDeviceAsync()](https://www.dynamsoft.com/web-twain/docs/info/api/WebTwain_Acquire.html#getdevicesasync) | [GetSourceNames()](https://www.dynamsoft.com/web-twain/docs/info/api/WebTwain_Acquire.html#getsourcenames), [GetSourceNamesAsync()](https://www.dynamsoft.com/web-twain/docs/info/api/WebTwain_Acquire.html#getsourcenamesasync)| +| [GetDevicesAsync()](https://www.dynamsoft.com/web-twain/docs/info/api/WebTwain_Acquire.html#getdevicesasync) | [GetSourceNames()](https://www.dynamsoft.com/web-twain/docs/info/api/WebTwain_Acquire.html#getsourcenames), [GetSourceNamesAsync()](https://www.dynamsoft.com/web-twain/docs/info/api/WebTwain_Acquire.html#getsourcenamesasync)| | [SelectDeviceAsync()](https://www.dynamsoft.com/web-twain/docs/info/api/WebTwain_Acquire.html#selectdeviceasync) | [SelectSourceByIndex()](https://www.dynamsoft.com/web-twain/docs/info/api/WebTwain_Acquire.html#selectsourcebyindex), [SelectSourceByIndexAsync()](https://www.dynamsoft.com/web-twain/docs/info/api/WebTwain_Acquire.html#selectsourcebyindexasync) | | [SelectSourceAsync()](https://www.dynamsoft.com/web-twain/docs/info/api/WebTwain_Acquire.html#selectsourceasync) | [SelectSource()](https://www.dynamsoft.com/web-twain/docs/info/api/WebTwain_Acquire.html#selectsource) | | [AcquireImageAsync()](https://www.dynamsoft.com/web-twain/docs/info/api/WebTwain_Acquire.html#acquireimageasync) | [AcquireImage()](https://www.dynamsoft.com/web-twain/docs/info/api/WebTwain_Acquire.html#acquireimage) | @@ -43,4 +43,4 @@ DWTObject.GetDevicesAsync(Dynamsoft.DWT.EnumDWT_DeviceType.TWAINSCANNER|Dynamsof ``` ### Difference between the WIASCANNER and WIATWAINSCANNER DeviceType -To support the WIA protocol in v18.2+, we added a new Enumeration `WIASCANNER` to [Dynamsoft.DWT.EnumDWT_DeviceType](https://www.dynamsoft.com/web-twain/docs/info/api/Dynamsoft_Enum.html?ver=latest&&cVer=true#dynamsoftdwtenumdwt_devicetype) . The enumeration named `WIATWAINSCANNER` represents WIA sources mapped through the TWAIN protocol after packaging by Microsoft. It was used in previous versions of Dynamic Web TWAIN and it will continue to be supported. +To support the WIA protocol in v18.2+, we added a new Enumeration `WIASCANNER` to [Dynamsoft.DWT.EnumDWT_DeviceType](https://www.dynamsoft.com/web-twain/docs/info/api/Dynamsoft_Enum.html?ver=latest&&cVer=true#dynamsoftdwtenumdwt_devicetype) . The enumeration named `WIATWAINSCANNER` represents WIA sources mapped through the TWAIN protocol after packaging by Microsoft. It was used in previous versions of Dynamic Web TWAIN but has been deprecated since v18.2 and will be removed in a future version; please use `WIASCANNER` instead for new development. From 105af8f044a63499bf674fe179e65e471948598c Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Wed, 29 Jul 2026 16:06:05 +0800 Subject: [PATCH 05/47] docs(faq): fix deprecated capability API and missing OpenSource() call in remove-blank-page-automatically FAQ - Capability/CapType/CapValue/CapSet are deprecated (see _articles/info/schedule/deprecated.md); replaced the sample with the current setCapabilities() API. - DWTObject.OpenSource; was missing its call parentheses, making it a no-op. Fixes #1037 Co-Authored-By: Claude Sonnet 5 --- .../faq/remove-blank-page-automatically.md | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/_articles/faq/remove-blank-page-automatically.md b/_articles/faq/remove-blank-page-automatically.md index 9574ba46..db8862b3 100644 --- a/_articles/faq/remove-blank-page-automatically.md +++ b/_articles/faq/remove-blank-page-automatically.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Capture/ Image Source, detect, discard blank pages breadcrumbText: Can the Dynamic Web TWAIN SDK automatically remove blank pages during the document scanning process? description: Can the Dynamic Web TWAIN SDK automatically remove blank pages during the document scanning process? date: 2021-07-14 18:58:25 +0000 -last_modified: 2024-09-19 08:47:35 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- # Capture/Image Source @@ -19,22 +19,31 @@ last_modified: 2024-09-19 08:47:35 +0000 If the TWAIN driver of your device supports discarding blank pages, you can use the driver's built-in feature. 1. You can set the [ `IfShowUI` ](/_articles/info/api/WebTwain_Acquire.md#ifshowui) property to true to display the User Interface (UI) of the source and you can check the option there (It normally reads 'discard blank'.). -2. If you don't want to show the user interface of the source, you can set [ `IfAutoDiscardBlankpages` ](/_articles/info/api/WebTwain_Acquire.md#ifautodiscardblankpages) to true or negotiate the ICAP_AUTODISCARDBLANKPAGES capability to discard blank pages automatically. Please NOTE that this property or capability only works if the scanner itself supports the feature (on the hardware level). +2. If you don't want to show the user interface of the source, you can set [ `IfAutoDiscardBlankpages` ](/_articles/info/api/WebTwain_Acquire.md#ifautodiscardblankpages) to true or negotiate the ICAP_AUTODISCARDBLANKPAGES capability using [ `setCapabilities()` ](/_articles/info/api/WebTwain_Acquire.md#setcapabilities) to discard blank pages automatically. Please NOTE that this property or capability only works if the scanner itself supports the feature (on the hardware level). ```javascript DWTObject.SelectSource(); -DWTObject.OpenSource; +DWTObject.OpenSource(); DWTObject.IfShowUI = false; //*Use the property DWTObject.IfAutoDiscardBlankpages = true; //*Use capability negotiation -DWTObject.Capability = Dynamsoft.DWT.EnumDWT_Cap.ICAP_AUTODISCARDBLANKPAGES; -DWTObject.CapType = Dynamsoft.DWT.EnumDWT_CapType.TWON_ONEVALUE; -DWTObject.CapValue = -1; //Auto -if (DWTObject.CapSet) { - alert("Successful!"); -} -DWTObject.AcquireImage(); +DWTObject.setCapabilities( + { + capabilities: [ + { + capability: Dynamsoft.DWT.EnumDWT_Cap.ICAP_AUTODISCARDBLANKPAGES, + curValue: -1, //Auto + }, + ], + }, + function (successData) { + DWTObject.AcquireImage(); + }, + function (errorData) { + console.error(errorData); + } +); ``` ### Method Two From eedc7d7eca481a74de733425cd262aad9a4aa407 Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Wed, 29 Jul 2026 16:06:32 +0800 Subject: [PATCH 06/47] docs(faq): fix wrong field name for TWON_ENUMERATION capability values CapabilityDetails documents "values" as corresponding to TWON_ARRAY and "enums" as the field for TWON_ENUMERATION; the sample read the wrong one for the ICAP_XRESOLUTION enumeration branch. Fixes #1038 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/list-supported-resolution-DPI.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_articles/faq/list-supported-resolution-DPI.md b/_articles/faq/list-supported-resolution-DPI.md index 504329c5..1bfbd2fe 100644 --- a/_articles/faq/list-supported-resolution-DPI.md +++ b/_articles/faq/list-supported-resolution-DPI.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Capture/ Image Source, supported resolution, DPI breadcrumbText: How can I get a list of supported resolution/DPI values from the document scanner? description: How can I get a list of supported resolution/DPI values from the document scanner? date: 2021-12-08 03:01:32 +0000 -last_modified: 2025-02-26 14:48:28 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- # Capture/Image Source @@ -45,7 +45,7 @@ DWTObject.getCapabilities( for (var i = 0; i < result.length; i++) { if (result[i].capability.value === Dynamsoft.DWT.EnumDWT_Cap.ICAP_XRESOLUTION) { if (result[i].conType.label === 'TWON_ENUMERATION') { // If the capability's Value Type is Enumeration - dpi = result[i].values; + dpi = result[i].enums; console.log(dpi); // The list of supported resolution. } else if (result[i].conType.label === 'TWON_RANGE') { // If the capability's Value Type is Range max = result[i].maxValue; From 0b4535dcfaa909608186c3ed8c62643eeafe02fd Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Wed, 29 Jul 2026 16:07:02 +0800 Subject: [PATCH 07/47] docs(faq): fix dead anchor in what-image-editing-operation-supported FAQ The linked image-processing/index.md#edit-options anchor doesn't exist (that page is just a 2-link table of contents). Point to the actual "Common Editing APIs" section in image-editing.md instead. Fixes #1043 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/what-image-editing-operation-supported.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_articles/faq/what-image-editing-operation-supported.md b/_articles/faq/what-image-editing-operation-supported.md index 08d5adac..4ea161e1 100644 --- a/_articles/faq/what-image-editing-operation-supported.md +++ b/_articles/faq/what-image-editing-operation-supported.md @@ -7,11 +7,11 @@ keywords: Dynamic Web TWAIN, Image Editing, image, image editing, breadcrumbText: What image editing operations does the Dynamic Web TWAIN SDK support? description: What image editing operations does the Dynamic Web TWAIN SDK support? date: 2021-12-09 09:25:33 +0000 -last_modified: 2022-06-10 04:40:03 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- # Image Editing ## What image editing operations does the Dynamic Web TWAIN SDK support? -Dynamic Web TWAIN offers many image editing features to help give you the result you are looking for. All the image editing operations are explained in details [here](/_articles/general-usage/image-processing/index.md#edit-options){:target="_blank"}. +Dynamic Web TWAIN offers many image editing features to help give you the result you are looking for. All the image editing operations are explained in details [here](/_articles/general-usage/image-processing/image-editing.md#common-editing-apis){:target="_blank"}. From 3c56623c0c76efe6c56ab77a203b0faa4f914f5a Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Wed, 29 Jul 2026 16:07:24 +0800 Subject: [PATCH 08/47] docs(faq): fix contradictory version claim in unable-to-load-4-bit-tiff FAQ Cause said "prior to 19.0" while Resolution said the fix landed in 19.1, self-contradicting. _articles/info/schedule/Stable.md confirms 4-bit TIFF support was added in 19.1, not 19.0. Fixes #1044 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/unable-to-load-4-bit-tiff.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/_articles/faq/unable-to-load-4-bit-tiff.md b/_articles/faq/unable-to-load-4-bit-tiff.md index abc2bcec..727178c6 100644 --- a/_articles/faq/unable-to-load-4-bit-tiff.md +++ b/_articles/faq/unable-to-load-4-bit-tiff.md @@ -7,6 +7,7 @@ keywords: Dynamic Web TWAIN, Error Troubleshooting, tiff breadcrumbText: Why am I unable to load the TIFF file into Dynamic Web TWAIN? description: Why am I unable to load the TIFF file into Dynamic Web TWAIN? date: 2025-04-23 16:09:35 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- # Error Troubleshooting @@ -19,7 +20,7 @@ When you attempt to import a TIFF file using Dynamic Web TWAIN, it will indicate ### Cause -All versions prior to version 19.0 do not support importing 4-bit color images. If you encounter the issue mentioned above, your file may be using the deprecated JPEG compression standard. +All versions prior to version 19.1 do not support importing 4-bit color images. If you encounter the issue mentioned above, your file may be using the deprecated JPEG compression standard. ### Resolution From 29ce566befefb9917ef8ff3021efa1ebf90d7978 Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Wed, 29 Jul 2026 16:07:57 +0800 Subject: [PATCH 09/47] docs(faq): fix missing buttons nesting in customize-ui-elements-of-image-editor FAQ EditorSettings only defines top-level buttons/dialogText; titles and visibility must be nested as buttons.titles/buttons.visibility. The two short snippets showed them as bare top-level keys, inconsistent with the file's own complete example further down. Fixes #1046 Co-Authored-By: Claude Sonnet 5 --- .../customize-ui-elements-of-image-editor.md | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/_articles/faq/customize-ui-elements-of-image-editor.md b/_articles/faq/customize-ui-elements-of-image-editor.md index a89f65b2..491278ce 100644 --- a/_articles/faq/customize-ui-elements-of-image-editor.md +++ b/_articles/faq/customize-ui-elements-of-image-editor.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, UI Customization, customize, ui elements breadcrumbText: Can I customize UI elements of the built-in image editor? description: Can I customize UI elements of the built-in image editor? date: 2021-12-08 03:32:59 +0000 -last_modified: 2024-09-19 08:47:35 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- # UI Customization @@ -18,15 +18,17 @@ Yes, you can perform various customizations on the image editor. Some of such cu ### Can I change the language of the Editor? -Yes, as shown in the sample code below, you can use the parameters `titles` and `dialogText` to specify the language used in the editor. +Yes, as shown in the sample code below, you can use the parameters `buttons.titles` and `dialogText` to specify the language used in the editor. ```javascript - titles: { - 'previous': 'Previous Image', - 'next': 'Next Image', - 'print': 'Print Image', - 'scan': 'Scan Documents', - 'load': 'Load Local Images' + buttons: { + titles: { + 'previous': 'Previous Image', + 'next': 'Next Image', + 'print': 'Print Image', + 'scan': 'Scan Documents', + 'load': 'Load Local Images' + } } ``` @@ -41,14 +43,16 @@ Yes, as shown in the sample code below, you can use the parameters `titles` and ### Can I remove or add buttons on the toolbar of the Editor? -While you can use `visibility` (as shown in the sample code below) to remove a default button(s), currently you cannot add a custom button. +While you can use `buttons.visibility` (as shown in the sample code below) to remove a default button(s), currently you cannot add a custom button. ```javascript -visibility: { - 'scan': true, - 'load': true, - 'print': false, - 'removeall': true +buttons: { + visibility: { + 'scan': true, + 'load': true, + 'print': false, + 'removeall': true + } } ``` From fdd639421b1e95f025e8861f5664e071e69bb170 Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Wed, 29 Jul 2026 16:10:05 +0800 Subject: [PATCH 10/47] docs(faq): add missing pdf/a-3b variant to generate-pdf-files FAQ pdf/a-3b is a documented value of PDFWSettings.pdfaVersion, added in v19.4 per _articles/info/schedule/Stable.md ("Added support for writing PDF as PDF/A-3b"). The FAQ's supported-versions table only listed pdf/a-1b and pdf/a-2b. Fixes #1047 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/generate-pdf-files.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/_articles/faq/generate-pdf-files.md b/_articles/faq/generate-pdf-files.md index e96772a0..624dfa9b 100644 --- a/_articles/faq/generate-pdf-files.md +++ b/_articles/faq/generate-pdf-files.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Addon, separate, license breadcrumbText: How can I generate PDF/A files? description: How can I generate PDF/A files? date: 2021-12-01 01:09:41 +0000 -last_modified: 2025-12-10 16:43:15 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- # Addon @@ -19,10 +19,11 @@ PDF/A is an archival format designed for long-term preservation. The following v ### Supported PDF/A Versions -| PDF/A Variant | Underlying PDF Version | -|:-------------:|-----------------------------| -| `pdf/a-1b` | **1.4** (default) | -| `pdf/a-2b` | **1.5** (default), 1.6, 1.7 | +| PDF/A Variant | Underlying PDF Version | Availability | +|:-------------:|-----------------------------|--------------| +| `pdf/a-1b` | **1.4** (default) | v19.3+ | +| `pdf/a-2b` | **1.5** (default), 1.6, 1.7 | v19.3+ | +| `pdf/a-3b` | See [`pdfaVersion`](/_articles/info/api/interfaces.md#pdfwsettings) | v19.4+ | ### What’s the difference between PDF/A-1b and PDF/A-2b? Although both variants ensure that documents can be reliably displayed in the future, they differ in terms of supported PDF features and compression options. @@ -65,8 +66,8 @@ Configure PDF output using [`Write.Setup()`](/_articles/info/api/Addon_PDF.md#wr ```javascript DWTObject.Addon.PDF.Write.Setup({ - version: "1.5", // [optional] 1.4 for "pdf/a-1b"; 1.5/1.6/1.7 for "pdf/a-2b" - pdfaVersion: "pdf/a-2b" // "pdf/a-1b" or "pdf/a-2b" + version: "1.5", // [optional] 1.4 for "pdf/a-1b"; 1.5/1.6/1.7 for "pdf/a-2b"/"pdf/a-3b" + pdfaVersion: "pdf/a-2b" // "pdf/a-1b", "pdf/a-2b" (since v19.3), or "pdf/a-3b" (since v19.4) }); ``` From ebe492c94050bfef06acdd54a06957e7458557d0 Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Wed, 29 Jul 2026 16:10:29 +0800 Subject: [PATCH 11/47] docs(faq): fix method name case in protect-sensitive-information FAQ The API doc's method is Erase() (capital E); the FAQ referenced it as lowercase erase(), which would mismatch for anyone copying the name into code. Fixes #1050 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/protect-sensitive-information.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_articles/faq/protect-sensitive-information.md b/_articles/faq/protect-sensitive-information.md index 602b2ba8..e755c673 100644 --- a/_articles/faq/protect-sensitive-information.md +++ b/_articles/faq/protect-sensitive-information.md @@ -7,13 +7,13 @@ keywords: Dynamic Web TWAIN, Image Viewer, object defined breadcrumbText: Can I protect sensitive information of an image from being seen? description: Can I protect sensitive information of an image from being seen? date: 2021-12-09 11:34:50 +0000 -last_modified: 2025-02-07 17:17:34 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- # Image Viewer ## Can I protect sensitive information of an image from being seen? -If you need to modify an image by concealing certain areas permanently, you can use the [erase()](/_articles/info/api/WebTwain_Edit.md#erase){:target="_blank"} method. This method is particularly useful when the requirement involves replacing a rectangular region within the image with a solid white block. +If you need to modify an image by concealing certain areas permanently, you can use the [Erase()](/_articles/info/api/WebTwain_Edit.md#erase){:target="_blank"} method. This method is particularly useful when the requirement involves replacing a rectangular region within the image with a solid white block. On the other hand, if you prefer a customizable and removable layer to temporarily conceal particular content, our newly developed Annotation feature is just what you need. For comprehensive details about this feature, please click on the following link: How can I add annotations to an image and then save/upload it? \ No newline at end of file From be10e2461cd9ee9933c35334a573e43b2d516e97 Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Wed, 29 Jul 2026 16:11:08 +0800 Subject: [PATCH 12/47] docs(faq): rewrite source-connected-to-maximum sample to use async SelectSource() WebTwain_Acquire.md recommends calling SelectSource() asynchronously via callbacks; the no-argument synchronous form is Windows-only. Per review feedback, rewrite the sample to use the async form exclusively rather than documenting the sync/no-args form as a caveat. Fixes #1051 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/source-connected-to-maximum.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/_articles/faq/source-connected-to-maximum.md b/_articles/faq/source-connected-to-maximum.md index b1dd45b1..34f30736 100644 --- a/_articles/faq/source-connected-to-maximum.md +++ b/_articles/faq/source-connected-to-maximum.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Error Troubleshooting breadcrumbText: Source is connected to the maximum supported number of applications description: Source is connected to the maximum supported number of applications date: 2021-12-03 23:26:46 +0000 -last_modified: 2024-09-19 08:47:35 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- # Error Troubleshooting @@ -32,11 +32,17 @@ function btnScan_onclick() { DWTObject.RegisterEvent("OnPostAllTransfers", function () { DWTObject.CloseSource(); }); - DWTObject.SelectSource(); - DWTObject.CloseSource(); //close source before open - DWTObject.OpenSource(); - DWTObject.IfDisableSourceAfterAcquire = true; //close the scanner UI after acquiring - DWTObject.AcquireImage(); + DWTObject.SelectSource( + function () { + DWTObject.CloseSource(); //close source before open + DWTObject.OpenSource(); + DWTObject.IfDisableSourceAfterAcquire = true; //close the scanner UI after acquiring + DWTObject.AcquireImage(); + }, + function (errorCode, errorString) { + console.log(errorString); + } + ); } ``` From 62671e7b7669469caed4029af9d7e59b8d2de0fe Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Wed, 29 Jul 2026 16:11:54 +0800 Subject: [PATCH 13/47] docs(faq): add missing AutoLoad/Containers precondition to type-error-appendchild FAQ Dynamsoft_WebTwainEnv.md's CreateDWTObjectEx() caution note requires disabling auto-load (AutoLoad = false, Containers = []) first to avoid racing with the dynamic-initialization path -- exactly the race that produces the appendChild error this FAQ addresses. Option 1's sample omitted this step; rephrased the surrounding text as well. Fixes #1055 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/type-error-appendchild.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_articles/faq/type-error-appendchild.md b/_articles/faq/type-error-appendchild.md index 1b0562bf..cde2c01e 100644 --- a/_articles/faq/type-error-appendchild.md +++ b/_articles/faq/type-error-appendchild.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Error message breadcrumbText: Error Message - Uncaught TypeError - Cannot read properties of null (reading 'appendChild') or Failed to execute 'appendChild' on 'Node'- parameter 1 is not of type 'Node'. description: Error Message - Uncaught TypeError - Cannot read properties of null (reading 'appendChild') or Failed to execute 'appendChild' on 'Node'- parameter 1 is not of type 'Node'. date: 2022-12-27 15:57:25 +0000 -last_modified: 2024-09-19 08:47:35 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- # Error Troubleshooting @@ -27,7 +27,7 @@ Typically, an application uses `DWTObject = Dynamsoft.DWT.GetWebTwain('dwtcontro ### Workaround: Please check if your container is created dynamically (especially if you are using dynamic frameworks). There are two ways to address the issue. -(1) If you want to use dynamic initialization method, here is sample code to create the object dynamically: +(1) If you want to use the dynamic initialization method, first disable auto-loading in `dynamsoft.webtwain.config.js` by setting both `Dynamsoft.DWT.AutoLoad = false` and `Dynamsoft.DWT.Containers = []`. Otherwise, the auto-loading process can race with your own `CreateDWTObjectEx()` call and create the exact container-not-ready condition described above. Once auto-loading is disabled, here is sample code to create the object dynamically once your container is confirmed to exist: ```javascript Dynamsoft.DWT.CreateDWTObjectEx( @@ -47,4 +47,4 @@ Dynamsoft.DWT.CreateDWTObjectEx( ); ``` -(2) If you want to use default initialization method, please set `Dynamsoft.DWT.AutoLoad` to `false` and manually implement `Dynamsoft.DWT.Load()` after you confirm the container has been created. +(2) If you want to use the default initialization method instead, set `Dynamsoft.DWT.AutoLoad` to `false` and manually call `Dynamsoft.DWT.Load()` once you've confirmed the container has been created. From 7ec6e59e9047b7359c4b9e93dc4bb4a6356cdd3c Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Wed, 29 Jul 2026 16:12:25 +0800 Subject: [PATCH 14/47] docs(faq): fix dead anchor and rephrase error-message-product-key-expired FAQ upgrade.md#update-the-license-key doesn't exist. Per review feedback, point to general-usage/license.md (no anchor) and rephrase the step. Fixes #1056 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/error-message-product-key-expired.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_articles/faq/error-message-product-key-expired.md b/_articles/faq/error-message-product-key-expired.md index 7e659322..d3d71685 100644 --- a/_articles/faq/error-message-product-key-expired.md +++ b/_articles/faq/error-message-product-key-expired.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Error Troubleshooting, product key, expired breadcrumbText: Error message – Your Dynamic Web TWAIN product key expired description: Error message – Your Dynamic Web TWAIN product key expired date: 2021-12-03 23:26:46 +0000 -last_modified: 2022-06-10 04:40:03 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- # Error Troubleshooting @@ -27,5 +27,5 @@ The trial product key has expired. ### Resolution Follow the instructions on that pop-up which are: -1. Request a new trial product key here. Refer to [this article](/_articles/indepth/development/upgrade.md#update-the-license-key){:target="_blank"} to update the ProductKey +1. Request a new trial product key here. Refer to [Using License Keys](/_articles/general-usage/license.md){:target="_blank"} for how to configure the new ProductKey in your project 2. Do a hard refresh or clear cache in your browser to make sure the new ProductKey is used From e9d90391d9ddb603c1c20d5654eab8b9ad942405 Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Wed, 29 Jul 2026 16:13:00 +0800 Subject: [PATCH 15/47] docs(faq): fix dead anchor in image-viewer-object-defined FAQ viewer-configuration.md#create-the-viewer doesn't exist. Per review feedback, point to #configuring-viewer-instantiation instead. Fixes #1057 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/image-viewer-object-defined.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/_articles/faq/image-viewer-object-defined.md b/_articles/faq/image-viewer-object-defined.md index cb6988e9..05a75668 100644 --- a/_articles/faq/image-viewer-object-defined.md +++ b/_articles/faq/image-viewer-object-defined.md @@ -7,6 +7,7 @@ keywords: Dynamic Web TWAIN, Image Viewer, object defined breadcrumbText: Where is the image viewer object defined? description: Where is the image viewer object defined? date: 2025-04-17 17:43:22 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- # Image Viewer @@ -14,4 +15,4 @@ date: 2025-04-17 17:43:22 +0000 ## Where is the image viewer object defined? By default, Dynamic Web TWAIN has a viewer component that helps to view data available in the buffer. When you [create an instance of Web Twain](/_articles/extended-usage/advanced-initialization.md#instantiating-webtwain-without-onwebtwainready){:target="_blank"}, the viewer is created automatically with its default available settings. You can customize the viewer settings according to your requirements and replace the default viewer with your customized viewer settings. -You can refer to this [link](/_articles/general-usage/viewer-configuration.md#create-the-viewer){:target="_blank"} to read in details about the steps to create/modify the viewer. +You can refer to this [link](/_articles/general-usage/viewer-configuration.md#configuring-viewer-instantiation){:target="_blank"} to read in details about the steps to create/modify the viewer. From a65579ce55857393a73246086b30ba25d88f9557 Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Wed, 29 Jul 2026 16:13:34 +0800 Subject: [PATCH 16/47] docs(faq): fix dead anchor and refresh http-servers-support FAQ image-export/index.md#upload doesn't exist (the content lives in the sibling server-upload.md). Per review feedback, point to the correct "Uploading over HTTP" section and refresh the surrounding copy (also fixed a grammar typo in the title: "do your support" -> "do you support"). Fixes #1058 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/http-servers-support.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/_articles/faq/http-servers-support.md b/_articles/faq/http-servers-support.md index 6b911bf7..5d7d37a7 100644 --- a/_articles/faq/http-servers-support.md +++ b/_articles/faq/http-servers-support.md @@ -2,22 +2,22 @@ layout: default-layout noTitleIndex: true needAutoGenerateSidebar: true -title: What type of HTTP servers do your support? Do you support other server types? +title: What type of HTTP servers do you support? Do you support other server types? keywords: Dynamic Web TWAIN, Document Saving, HTTP servers support -breadcrumbText: What type of HTTP servers do your support? Do you support other server types? -description: What type of HTTP servers do your support? Do you support other server types? +breadcrumbText: What type of HTTP servers do you support? Do you support other server types? +description: What type of HTTP servers do you support? Do you support other server types? date: 2021-11-29 18:33:59 +0000 -last_modified: 2022-06-10 04:40:03 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- # Document Saving -## What type of HTTP servers do your support? Do you support other server types? +## What type of HTTP servers do you support? Do you support other server types? -We support any web servers such Apache, NGINX, IIS, Tomcat, Node.js, etc. We also support Mail/FTP/Database servers. +Dynamic Web TWAIN works with any web server capable of receiving an HTTP POST request, such as Apache, NGINX, IIS, Tomcat, or Node.js. We also support uploading via FTP, as well as sending images directly to Mail/Database servers through your own server-side script. -To upload documents via HTTP, we recommend the API [here](/_articles/general-usage/image-export/index.md#upload){:target="_blank"}. +To upload documents over HTTP, see [Uploading over HTTP](/_articles/general-usage/image-export/server-upload.md#uploading-over-http){:target="_blank"} for the relevant API and sample code. -Dynamic Web TWAIN sends an HTTP POST request to the server when doing an upload. You need to write your server-side script to receive and save the uploaded files. On the server side, any scripting language can be used. +You need to write your own server-side script to receive and save the uploaded files. On the server side, any scripting language can be used. For more information and sample server-side scripts, please refer to [Server Scripts](/_articles/general-usage/server-side-scripting.md){:target="_blank"}, which includes sample scripts on how to save the uploaded file to a database such as MS SQL/Oracle, and how to resend the uploaded file by email. From fb72028406c608d424dea674e03097f6ed631b7c Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Wed, 29 Jul 2026 16:13:59 +0800 Subject: [PATCH 17/47] docs(faq): fix empty call-to-action links in flexible-to-custom-license FAQ Both "this form" and "contact us" had empty href attributes. Filled in the quote-request form URL (per review feedback) and the standard Dynamsoft contact page. Fixes #1059 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/flexible-to-custom-license.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_articles/faq/flexible-to-custom-license.md b/_articles/faq/flexible-to-custom-license.md index 776f6136..f6456b7d 100644 --- a/_articles/faq/flexible-to-custom-license.md +++ b/_articles/faq/flexible-to-custom-license.md @@ -7,11 +7,11 @@ keywords: Dynamic Web TWAIN, Licensing and Purchase, flexible, custom licensing breadcrumbText: Are you flexible to discuss custom licensing models? description: Are you flexible to discuss custom licensing models? date: 2021-12-04 02:34:30 +0000 -last_modified: 2024-07-15 18:12:55 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- # Licensing and Purchase ## Are you flexible to discuss custom licensing models? -Yes. We understand our standard options may not cover your need, so we are very flexible with different licensing metrics to best serve your business. Please submit your request via this form or directly contact us. +Yes. We understand our standard options may not cover your need, so we are very flexible with different licensing metrics to best serve your business. Please submit your request via this form or directly contact us. From 82f4033ee7d36d1dc800b824d8f3dd744421b2bc Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Wed, 29 Jul 2026 16:14:28 +0800 Subject: [PATCH 18/47] docs(faq): fix dead anchor in service-is-blocked FAQ general-troubleshooting-steps.md's verbose-log heading renders as #enable-and-collect-verbose-logs, not #how-to-enable-and-collect-verbose-log. Fixes #1062 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/service-is-blocked.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_articles/faq/service-is-blocked.md b/_articles/faq/service-is-blocked.md index 8220bab0..fab600be 100644 --- a/_articles/faq/service-is-blocked.md +++ b/_articles/faq/service-is-blocked.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Dynamic Web TWAIN Service, scanner UI, file dialog breadcrumbText: The scanner's UI or the system's file dialog does not open when scanning description: The scanner's UI or the system's file dialog does not open when scanning date: 2022-06-15 06:06:49 +0000 -last_modified: 2023-11-28 15:42:10 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- View all FAQs about [Project Deployment and End-user Installation]( @@ -41,7 +41,7 @@ The issue occurs when the allocated memory address exceeds the 32-bit limit. In To determine which process is blocking Dynamic Web TWAIN Service, please follow the steps below. -1. Collect [verbose log](/_articles/faq/general-troubleshooting-steps.md#how-to-enable-and-collect-verbose-log){:target="_blank"} +1. Collect [verbose log](/_articles/faq/general-troubleshooting-steps.md#enable-and-collect-verbose-logs){:target="_blank"} 2. Open the file wts.log and search for the string "GetConnectionProcessID" to locate the line: *GetConnectionProcessID:: connection client 1960 process is xxxxx.* From c02becbfd8347af96db491c6aeb08063ef5a8b84 Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Wed, 29 Jul 2026 16:15:12 +0800 Subject: [PATCH 19/47] docs(faq): fix dead anchor in service-prompting-to-install-repeatedly FAQ dynamsoft-service-configuration.md#related-files-and-folders doesn't exist. Per review feedback, point to #installation-folder, which already documents the relevant files (log, DSConfiguration.ini, storage). Fixes #1063 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/service-prompting-to-install-repeatedly.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_articles/faq/service-prompting-to-install-repeatedly.md b/_articles/faq/service-prompting-to-install-repeatedly.md index a45d116f..efb6bedb 100644 --- a/_articles/faq/service-prompting-to-install-repeatedly.md +++ b/_articles/faq/service-prompting-to-install-repeatedly.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Project Deployment and End-user Installation, insta breadcrumbText: I have installed the Dynamic Web TWAIN Service on an end-user machine but still got asked to install it repeatedly. Why? description: I have installed the Dynamic Web TWAIN Service on an end-user machine but still got asked to install it repeatedly. Why? date: 2021-12-11 06:47:21 +0000 -last_modified: 2025-11-04 13:39:41 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- View all FAQs about [Project Deployment and End-user Installation]( @@ -42,7 +42,7 @@ https://www.dynamsoft.com/web-twain/docs/faq/#project-deployment-and-end-user-in 1. See [Chromium local network access issue](/_articles/faq/chromium-142-local-network-access-issue.md) for details and corrective actions. -2. Check the service's [installation folder](/_articles/extended-usage/dynamsoft-service-configuration.md#installation-folder) and make sure you have [the correct files](/_articles/extended-usage/dynamsoft-service-configuration.md#related-files-and-folders){:target="_blank"}. +2. Check the service's [installation folder](/_articles/extended-usage/dynamsoft-service-configuration.md#installation-folder) and make sure you have [the correct files](/_articles/extended-usage/dynamsoft-service-configuration.md#installation-folder){:target="_blank"}. 3. Check `Local Services` and make sure the Dynamic Web TWAIN Service is listed and Running. From 2bfd1918a09bd4f4726e548ab634fa8413526d52 Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Wed, 29 Jul 2026 16:15:50 +0800 Subject: [PATCH 20/47] docs(faq): fix dead anchor in resources-to-be-included-in-SDK FAQ initialization.md#loading-the-core-js-files no longer exists -- that content moved to general-usage/resource-loading.md. Point to the "Loading from Official SDK Package" section, which documents the resource file layout referenced by this FAQ. Fixes #1064 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/resources-to-be-included-in-SDK.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_articles/faq/resources-to-be-included-in-SDK.md b/_articles/faq/resources-to-be-included-in-SDK.md index fb3a59b8..0191ad9a 100644 --- a/_articles/faq/resources-to-be-included-in-SDK.md +++ b/_articles/faq/resources-to-be-included-in-SDK.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Project Deployment and End-user Installation, resou breadcrumbText: What resources of the SDK should be included in my web application? description: What resources of the SDK should be included in my web application? date: 2021-12-11 06:47:21 +0000 -last_modified: 2022-10-14 14:05:08 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- View all FAQs about [Project Deployment and End-user Installation]( @@ -23,4 +23,4 @@ Under the `\dist` folder, you can include the installers required per your OS re Under the `\src` folder, you do not need the wasm files if you are not using camera functionalities. -For more information, please check [Loading the Resource Files](/_articles/general-usage/initialization.md#loading-the-core-js-files){:target="_blank"}. +For more information, please check [Loading Library Resources](/_articles/general-usage/resource-loading.md#loading-from-official-sdk-package){:target="_blank"}. From 67f45c7f7573096c6c06b63837ce6c968d7c258d Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Wed, 29 Jul 2026 16:16:18 +0800 Subject: [PATCH 21/47] docs(faq): fix unclosed tag and dead anchor in securely-transfer-to-server FAQ - Unclosed swallowed the rest of the bullet's text into the hyperlink; converted to standard Markdown link syntax. - image-export/index.md#upload doesn't exist; pointed to the actual "Uploading over HTTP" section in server-upload.md instead. Fixes #1066 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/securely-transfer-to-server.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_articles/faq/securely-transfer-to-server.md b/_articles/faq/securely-transfer-to-server.md index 67a0de29..0ecf02c1 100644 --- a/_articles/faq/securely-transfer-to-server.md +++ b/_articles/faq/securely-transfer-to-server.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Security, securely transfer, server breadcrumbText: How can I securely transfer scanned documents to my server? description: How can I securely transfer scanned documents to my server? date: 2021-11-29 18:33:59 +0000 -last_modified: 2022-06-10 04:40:03 +0000 +last_modified: 2026-07-29 08:01:45 +0000 --- # Security @@ -22,8 +22,8 @@ To enable HTTPS, - Set the SSL port with the API [HTTPPort](/_articles/info/api/WebTwain_IO.md#httpport){:target="_blank"} -- Call the API HTTPUpload to upload the documents +- Call the API [HTTPUpload](/_articles/info/api/WebTwain_IO.md#httpupload){:target="_blank"} to upload the documents -To upload documents via HTTP/HTTPS, we recommend the API [here](/_articles/general-usage/image-export/index.md#upload){:target="_blank"}. +To upload documents via HTTP/HTTPS, we recommend following [Uploading over HTTP](/_articles/general-usage/image-export/server-upload.md#uploading-over-http){:target="_blank"}. > Note - that if you use this feature, you need to enable HTTPS on the server. For how to enable HTTPS, please check out the manual of your webserver. From df80a9e7bcd6d7e5a2df698d34e401ed9b9ac542 Mon Sep 17 00:00:00 2001 From: Louie-Dynamsoft Date: Wed, 29 Jul 2026 16:52:51 +0800 Subject: [PATCH 22/47] Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- _articles/faq/print-images-from-viewer.md | 2 +- _articles/faq/what-image-editing-operation-supported.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_articles/faq/print-images-from-viewer.md b/_articles/faq/print-images-from-viewer.md index 9c1f4b02..4bfe5ae1 100644 --- a/_articles/faq/print-images-from-viewer.md +++ b/_articles/faq/print-images-from-viewer.md @@ -14,4 +14,4 @@ last_modified: 2026-07-29 08:01:45 +0000 ## Can I print images from the viewer? -Yes, you can print the images from the viewer by exporting the image data in the buffer to a new browser window and use the browser's default feature to print images. This can be achieved by using the [PrintEx](/_articles/info/api/WebTwain_IO.md#printex){:target="_blank"} API, passing the indices of all the images in the buffer to print all of them, or just the selected ones to print a subset. +Yes. Use the [PrintEx](/_articles/info/api/WebTwain_IO.md#printex){:target="_blank"} API and pass the indices of the images you want to print (for example, call `SelectAllImages()` and pass `SelectedImagesIndices` to print all images). diff --git a/_articles/faq/what-image-editing-operation-supported.md b/_articles/faq/what-image-editing-operation-supported.md index 4ea161e1..f5283b41 100644 --- a/_articles/faq/what-image-editing-operation-supported.md +++ b/_articles/faq/what-image-editing-operation-supported.md @@ -14,4 +14,4 @@ last_modified: 2026-07-29 08:01:45 +0000 ## What image editing operations does the Dynamic Web TWAIN SDK support? -Dynamic Web TWAIN offers many image editing features to help give you the result you are looking for. All the image editing operations are explained in details [here](/_articles/general-usage/image-processing/image-editing.md#common-editing-apis){:target="_blank"}. +Dynamic Web TWAIN offers many image editing features to help give you the result you are looking for. All the image editing operations are explained in detail [here](/_articles/general-usage/image-processing/image-editing.md#common-editing-apis){:target="_blank"}. From 578e83afbe6de90eda148c8482a470c4db6ac25a Mon Sep 17 00:00:00 2001 From: Louie-Dynamsoft Date: Wed, 29 Jul 2026 16:57:45 +0800 Subject: [PATCH 23/47] Delete _articles/faq/additional-form-fields.md --- _articles/faq/additional-form-fields.md | 81 ------------------------- 1 file changed, 81 deletions(-) delete mode 100644 _articles/faq/additional-form-fields.md diff --git a/_articles/faq/additional-form-fields.md b/_articles/faq/additional-form-fields.md deleted file mode 100644 index f8e98873..00000000 --- a/_articles/faq/additional-form-fields.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -layout: default-layout -noTitleIndex: true -needAutoGenerateSidebar: true -title: How can I send additional form fields with images to my server or database? -keywords: Dynamic Web TWAIN, Document Saving, additional form fields -breadcrumbText: How can I send additional form fields with images to my server or database? -description: How can I send additional form fields with images to my server or database? -date: 2021-11-29 18:33:59 +0000 -last_modified: 2026-07-29 08:01:45 +0000 ---- - -# Document Saving - -## How can I send additional form fields with images to my server or database? - -You can use [SetHTTPFormField](/_articles/info/api/WebTwain_IO.md#sethttpformfield){:target="_blank"} to set meta data as form fields and use [HTTPUpload](/_articles/info/api/WebTwain_IO.md#httpupload){:target="_blank"} to send it to the server side with the scanned document. - -```javascript -// Clear old fields before adding new ones -DWTObject.ClearAllHTTPFormField(); -DWTObject.SetHTTPFormField("FileType", "Insurance Doc"); -``` - -You can check out this demo project for sending additional form fields when uploading the scanned document. - -[SetHTTPFormField](/_articles/info/api/WebTwain_IO.md#sethttpformfield){:target="_blank"} can also be used to send image data in base64 or BLOB to the server side. - -By design, the method [HTTPUpload()](/_articles/info/api/WebTwain_IO.md#httpupload){:target="_blank"} only contains one file. But as it essentially sends an HTTP form to the server, you can attach multiple files in that form using the methods [ConvertToBlob()](/_articles/info/api/WebTwain_IO.md#converttoblob){:target="_blank"} and [SetHTTPFormField()](/_articles/info/api/WebTwain_IO.md#sethttpformfield){:target="_blank"} . -Check out the following snippet on how it is done. Note that [HTTPUpload()](/_articles/info/api/WebTwain_IO.md#httpupload){:target="_blank"} still requires its `indices`, `type` and `dataFormat` parameters — since every image has already been attached individually as its own form field above, simply pass an empty array for `indices` so `HTTPUpload()` doesn't attach an additional file of its own. - -```javascript -/** - * Upload the images specified by their indices in the specified file type as separate files. - * @param indices Specify the images - * @param type Specify the file type - */ -function uploadSeparateFiles(indices, type) { - var protocol = Dynamsoft.Lib.detect.ssl ? "https://" : "http://", - port = window.location.port === "" ? 80 : window.location.port, - actionPage = "/upload.aspx"; - // path to the server-side script - var url = protocol + window.location.hostname + ":" + port + actionPage; - if (DWTObject) { - var done = 0, - count = indices.length; - var toBlob = function (index) { - var fieldName = "SampleFile_" + index; - var fileName = fieldName + getExtension(type); - DWTObject.ConvertToBlob( - [index], - type, - function (result, _indices, type) { - DWTObject.SetHTTPFormField(fieldName, result, fileName); - done++; - if (done === count) { - DWTObject.HTTPUpload( - url, - [], - type, - Dynamsoft.DWT.EnumDWT_UploadDataFormat.Binary, - function () { - console.log("Success"); - }, - function (errCode, errString, responseStr) { - console.log(errString); - } - ); - } else { - toBlob(indices[done]); - } - }, - function (errorCode, errorString) { - console.log(errorString); - } - ); - }; - toBlob(indices[done]); - } -} -``` From 570848de6169de75171bd413a01fd9b27872bb28 Mon Sep 17 00:00:00 2001 From: Louie-Dynamsoft Date: Wed, 29 Jul 2026 17:01:18 +0800 Subject: [PATCH 24/47] Update index.md --- _articles/faq/index.md | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/_articles/faq/index.md b/_articles/faq/index.md index 58d4d41a..b9378250 100644 --- a/_articles/faq/index.md +++ b/_articles/faq/index.md @@ -98,23 +98,22 @@ description: Dynamic Web TWAIN SDK Documentation FAQ ## Document Saving 1. [What image and document formats can I save my documents as?](/_articles/faq/image-document-formats-save.md) -2. [What type of HTTP servers do your support? Do you support other server types?](/_articles/faq/http-servers-support.md) +2. [What type of HTTP servers do you support? Do you support other server types?](/_articles/faq/http-servers-support.md) 3. [How can I enable HTTPS support?](/_articles/faq/enable-https-support.md) 4. [How can I get the smallest size of documents in PDF, TIFF or JPEG format?](/_articles/faq/smallest-size-documents.md) -5. [How can I send additional form fields with images to my server or database?](/_articles/faq/additional-form-fields.md) -6. [How can I automatically trigger actions when images arrive on my server side?](/_articles/faq/trigger-actions-server-side.md) -7. [Can I upload documents to a different website domain?](/_articles/faq/upload-documents-to-different-domain.md) -8. [How can I get a response string from my HTTP Server if the upload succeeds or fails?](/_articles/faq/response-string-from-server-on-upload.md) -9. [Can I upload documents via a background service outside the web browser?](/_articles/faq/upload-using-background-service.md) -10. [Can I insert newly scanned pages to an existing document?](/_articles/faq/insert-new-pages-to-existing-document.md) -11. [How can I upload a JSON file to my server?](/_articles/faq/upload-json-files-to-server.md) -12. [How can I save selected images instead of all images to my server or database?](/_articles/faq/save-selected-images-to-server.md) -13. [How to use a blank page as a separator?](/_articles/faq/use-blank-page-as-a-separator.md) -14. [How to upload multiple files at a time?](/_articles/faq/upload-multiple-files-at-a-time.md) -15. [How to deploy your own upload server with ASP.NET?](/_articles/faq/deploy-your-own-upload-server-with-asp.net.md) -16. [How to deploy your own upload server with JSP?](/_articles/faq/deploy-your-own-upload-server-with-jsp.md) -17. [How to deploy your own upload server with Node.js?](/_articles/faq/deploy-your-own-upload-server-with-node.js.md) -18. [How to deploy your own upload server with PHP?](/_articles/faq/deploy-your-own-upload-server-with-php.md) +5. [How can I automatically trigger actions when images arrive on my server side?](/_articles/faq/trigger-actions-server-side.md) +6. [Can I upload documents to a different website domain?](/_articles/faq/upload-documents-to-different-domain.md) +7. [How can I get a response string from my HTTP Server if the upload succeeds or fails?](/_articles/faq/response-string-from-server-on-upload.md) +8. [Can I upload documents via a background service outside the web browser?](/_articles/faq/upload-using-background-service.md) +9. [Can I insert newly scanned pages to an existing document?](/_articles/faq/insert-new-pages-to-existing-document.md) +10. [How can I upload a JSON file to my server?](/_articles/faq/upload-json-files-to-server.md) +11. [How can I save selected images instead of all images to my server or database?](/_articles/faq/save-selected-images-to-server.md) +12. [How to use a blank page as a separator?](/_articles/faq/use-blank-page-as-a-separator.md) +13. [How to upload multiple files at a time?](/_articles/faq/upload-multiple-files-at-a-time.md) +14. [How to deploy your own upload server with ASP.NET?](/_articles/faq/deploy-your-own-upload-server-with-asp.net.md) +15. [How to deploy your own upload server with JSP?](/_articles/faq/deploy-your-own-upload-server-with-jsp.md) +16. [How to deploy your own upload server with Node.js?](/_articles/faq/deploy-your-own-upload-server-with-node.js.md) +17. [How to deploy your own upload server with PHP?](/_articles/faq/deploy-your-own-upload-server-with-php.md) ## Security From b1112719defce366c74e48b93ea838365006d501 Mon Sep 17 00:00:00 2001 From: Louie-Dynamsoft Date: Wed, 29 Jul 2026 17:16:48 +0800 Subject: [PATCH 25/47] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- _articles/faq/support-wia-scanner-drivers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_articles/faq/support-wia-scanner-drivers.md b/_articles/faq/support-wia-scanner-drivers.md index c29ae31e..bbde2da8 100644 --- a/_articles/faq/support-wia-scanner-drivers.md +++ b/_articles/faq/support-wia-scanner-drivers.md @@ -43,4 +43,4 @@ DWTObject.GetDevicesAsync(Dynamsoft.DWT.EnumDWT_DeviceType.TWAINSCANNER|Dynamsof ``` ### Difference between the WIASCANNER and WIATWAINSCANNER DeviceType -To support the WIA protocol in v18.2+, we added a new Enumeration `WIASCANNER` to [Dynamsoft.DWT.EnumDWT_DeviceType](https://www.dynamsoft.com/web-twain/docs/info/api/Dynamsoft_Enum.html?ver=latest&&cVer=true#dynamsoftdwtenumdwt_devicetype) . The enumeration named `WIATWAINSCANNER` represents WIA sources mapped through the TWAIN protocol after packaging by Microsoft. It was used in previous versions of Dynamic Web TWAIN but has been deprecated since v18.2 and will be removed in a future version; please use `WIASCANNER` instead for new development. +To support the WIA protocol in v18.2+, we added a new enumeration `WIASCANNER` to [Dynamsoft.DWT.EnumDWT_DeviceType](https://www.dynamsoft.com/web-twain/docs/info/api/Dynamsoft_Enum.html?ver=latest&&cVer=true#dynamsoftdwtenumdwt_devicetype). The enumeration named `WIATWAINSCANNER` represents WIA sources mapped through the TWAIN protocol after packaging by Microsoft. It was used in previous versions of Dynamic Web TWAIN but has been deprecated since v18.2 and will be removed in a future version; please use `WIASCANNER` instead for new development. From e184d69aadbf322d74d4b96408fed9696aba904c Mon Sep 17 00:00:00 2001 From: Jackson-Dynamsoft <97287824+ztyyLV@users.noreply.github.com> Date: Wed, 29 Jul 2026 18:10:22 +0800 Subject: [PATCH 26/47] Apply suggestion from @lyzhang0113 Co-authored-by: Louie-Dynamsoft --- _articles/faq/remove-blank-page-automatically.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/_articles/faq/remove-blank-page-automatically.md b/_articles/faq/remove-blank-page-automatically.md index db8862b3..899c75e2 100644 --- a/_articles/faq/remove-blank-page-automatically.md +++ b/_articles/faq/remove-blank-page-automatically.md @@ -38,12 +38,13 @@ DWTObject.setCapabilities( ], }, function (successData) { - DWTObject.AcquireImage(); + console.log("Capability was successfully applied."); }, function (errorData) { console.error(errorData); } ); +DWTObject.AcquireImage(); ``` ### Method Two From b169f6c7ef9517f200daeb2a400a897e28ce9e81 Mon Sep 17 00:00:00 2001 From: Jackson-Dynamsoft <97287824+ztyyLV@users.noreply.github.com> Date: Thu, 30 Jul 2026 10:24:12 +0800 Subject: [PATCH 27/47] Apply suggestion from @lyzhang0113 Co-authored-by: Louie-Dynamsoft --- _articles/faq/show-page-number.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_articles/faq/show-page-number.md b/_articles/faq/show-page-number.md index 98ab3217..e002fd8e 100644 --- a/_articles/faq/show-page-number.md +++ b/_articles/faq/show-page-number.md @@ -14,7 +14,7 @@ last_modified: 2026-07-29 08:01:45 +0000 ## How can I show page number on each image? -`Viewer.showPageNumber` has been deprecated since v17.3. Use [updatePageNumberStyle](/_articles/info/api/WebTwain_Viewer.md#updatepagenumberstyle){:target="_blank"} instead to show the page number. +You could configure the `visibility` property to `true` with the [updatePageNumberStyle](/_articles/info/api/WebTwain_Viewer.md#updatepagenumberstyle){:target="_blank"} API to show the page number. ```javascript DWTObject.Viewer.updatePageNumberStyle({ visibility: "visible" }); From 9ce2f612e6fba844beb4a097e9367394830fd682 Mon Sep 17 00:00:00 2001 From: Jackson-Dynamsoft <97287824+ztyyLV@users.noreply.github.com> Date: Thu, 30 Jul 2026 10:32:37 +0800 Subject: [PATCH 28/47] Refactor UI element titles and dialog texts --- .../customize-ui-elements-of-image-editor.md | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/_articles/faq/customize-ui-elements-of-image-editor.md b/_articles/faq/customize-ui-elements-of-image-editor.md index 491278ce..366f4017 100644 --- a/_articles/faq/customize-ui-elements-of-image-editor.md +++ b/_articles/faq/customize-ui-elements-of-image-editor.md @@ -23,22 +23,21 @@ Yes, as shown in the sample code below, you can use the parameters `buttons.titl ```javascript buttons: { titles: { - 'previous': 'Previous Image', - 'next': 'Next Image', - 'print': 'Print Image', - 'scan': 'Scan Documents', - 'load': 'Load Local Images' + 'next': 'Next Image', + 'print': 'Print Image', + 'scan': 'Scan Documents', + 'load': 'Load Local Images' } } ``` ```javascript dialogText: { - dlgRotateAnyAngle: ['Angle :', 'Interpolation:', 'Keep size', ' OK ', 'Cancel'], - dlgChangeImageSize: ['New Height :', 'New Width :', 'Interpolation method:', ' OK ', 'Cancel'], - saveChangedImage: ['You have changed the image, do you want to keep the change(s)?', ' Yes ', ' No '], - selectSource: ['Select Source:', 'Select', 'Cancel', 'There is no source available'] - } + dlgRotateAnyAngle: ['Angle :', 'Interpolation:', 'Keep size', ' OK ', 'Cancel'], + dlgChangeImageSize: ['New Height :', 'New Width :', 'Interpolation method:', ' OK ', 'Cancel'], + saveChangedImage: ['You have changed the image, do you want to keep the change(s)?', ' Yes ', ' No '], + selectSource: ['Select Source:', 'Select', 'Cancel', 'There is no source available'] + } ``` ### Can I remove or add buttons on the toolbar of the Editor? @@ -48,10 +47,10 @@ While you can use `buttons.visibility` (as shown in the sample code below) to re ```javascript buttons: { visibility: { - 'scan': true, - 'load': true, - 'print': false, - 'removeall': true + 'scan': true, + 'load': true, + 'print': false, + 'removeall': true } } ``` From e41439e43b96f75029de217a2284637e730b553e Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Thu, 30 Jul 2026 14:35:19 +0800 Subject: [PATCH 29/47] docs(faq): correct PDF/A underlying version claims in generate-pdf-files FAQ pdf/a-2b and pdf/a-3b are both fixed at PDF 1.7 (not a configurable 1.5-1.7 range as previously stated), and version is ignored entirely once pdfaVersion is set -- pdf/a-1b is likewise fixed at PDF 1.4 regardless of what version is passed. Co-Authored-By: Claude Sonnet 5 --- _articles/faq/generate-pdf-files.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/_articles/faq/generate-pdf-files.md b/_articles/faq/generate-pdf-files.md index 624dfa9b..0035cabb 100644 --- a/_articles/faq/generate-pdf-files.md +++ b/_articles/faq/generate-pdf-files.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Addon, separate, license breadcrumbText: How can I generate PDF/A files? description: How can I generate PDF/A files? date: 2021-12-01 01:09:41 +0000 -last_modified: 2026-07-29 08:01:45 +0000 +last_modified: 2026-07-30 06:34:30 +0000 --- # Addon @@ -21,9 +21,9 @@ PDF/A is an archival format designed for long-term preservation. The following v | PDF/A Variant | Underlying PDF Version | Availability | |:-------------:|-----------------------------|--------------| -| `pdf/a-1b` | **1.4** (default) | v19.3+ | -| `pdf/a-2b` | **1.5** (default), 1.6, 1.7 | v19.3+ | -| `pdf/a-3b` | See [`pdfaVersion`](/_articles/info/api/interfaces.md#pdfwsettings) | v19.4+ | +| `pdf/a-1b` | **1.4** (fixed) | v19.3+ | +| `pdf/a-2b` | **1.7** (fixed) | v19.3+ | +| `pdf/a-3b` | **1.7** (fixed) | v19.4+ | ### What’s the difference between PDF/A-1b and PDF/A-2b? Although both variants ensure that documents can be reliably displayed in the future, they differ in terms of supported PDF features and compression options. @@ -34,7 +34,7 @@ Although both variants ensure that documents can be reliably displayed in the fu - May result in larger file sizes and more conversion restrictions. - PDF/A-2b - - Based on newer PDF versions (1.5–1.7). + - Based on PDF 1.7. - Supports **JPEG2000**, JBIG2, transparency, and other modern PDF features. - Typically requires **fewer changes** to the source document. - Usually produces **smaller output** files. @@ -56,9 +56,9 @@ DWTObject.Addon.PDF.IsRasterizationRequired(path); // returns true or false - If you do not set `pdfaVersion`, the export uses standard PDF format (non-PDF/A). -- If you set `pdfaVersion` but forget to set `version`, or set a mismatched or incorrect PDF version, Dynamic Web TWAIN automatically falls back to a default PDF version: - - `pdf/a-1b` → defaults to PDF `1.4` - - `pdf/a-2b` → defaults to PDF `1.5` +- The `version` setting only applies when exporting standard (non-PDF/A) PDFs. Once `pdfaVersion` is set, `version` is ignored — the underlying PDF version is fixed entirely by the PDF/A variant: + - `pdf/a-1b` → PDF `1.4` + - `pdf/a-2b` / `pdf/a-3b` → PDF `1.7` ### How to Export as PDF/A @@ -66,7 +66,7 @@ Configure PDF output using [`Write.Setup()`](/_articles/info/api/Addon_PDF.md#wr ```javascript DWTObject.Addon.PDF.Write.Setup({ - version: "1.5", // [optional] 1.4 for "pdf/a-1b"; 1.5/1.6/1.7 for "pdf/a-2b"/"pdf/a-3b" + version: "1.5", // [optional] Only used for standard (non-PDF/A) PDFs; ignored once pdfaVersion is set pdfaVersion: "pdf/a-2b" // "pdf/a-1b", "pdf/a-2b" (since v19.3), or "pdf/a-3b" (since v19.4) }); ``` From 3bbb34d59455e3db8712da549fed8feb001b27ad Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Thu, 30 Jul 2026 15:05:05 +0800 Subject: [PATCH 30/47] docs(faq): remove PDF/A-1b vs PDF/A-2b comparison from generate-pdf-files FAQ Co-Authored-By: Claude Sonnet 5 --- _articles/faq/generate-pdf-files.md | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/_articles/faq/generate-pdf-files.md b/_articles/faq/generate-pdf-files.md index 0035cabb..2e48d20b 100644 --- a/_articles/faq/generate-pdf-files.md +++ b/_articles/faq/generate-pdf-files.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Addon, separate, license breadcrumbText: How can I generate PDF/A files? description: How can I generate PDF/A files? date: 2021-12-01 01:09:41 +0000 -last_modified: 2026-07-30 06:34:30 +0000 +last_modified: 2026-07-30 07:04:41 +0000 --- # Addon @@ -25,20 +25,6 @@ PDF/A is an archival format designed for long-term preservation. The following v | `pdf/a-2b` | **1.7** (fixed) | v19.3+ | | `pdf/a-3b` | **1.7** (fixed) | v19.4+ | -### What’s the difference between PDF/A-1b and PDF/A-2b? -Although both variants ensure that documents can be reliably displayed in the future, they differ in terms of supported PDF features and compression options. -- PDF/A-1b - - Uses the older PDF 1.4 specification. - - **Does not support JPEG2000** or JBIG2 image compression. - - Does not allow transparency. - - May result in larger file sizes and more conversion restrictions. - -- PDF/A-2b - - Based on PDF 1.7. - - Supports **JPEG2000**, JBIG2, transparency, and other modern PDF features. - - Typically requires **fewer changes** to the source document. - - Usually produces **smaller output** files. - **Recommendation:** For most use cases, we recommend using **`pdf/a-2b`**. It offers better compression support, fewer limitations, and higher compatibility with modern PDFs while still meeting archival requirements. From fb041a2ad67c2b5939f452b828a4b9413e5c08c8 Mon Sep 17 00:00:00 2001 From: Louie-Dynamsoft Date: Thu, 30 Jul 2026 16:36:23 +0800 Subject: [PATCH 31/47] Update how-to-test-if-your-device-is-SANE-compliant.md fix #1041 --- _articles/faq/how-to-test-if-your-device-is-SANE-compliant.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/_articles/faq/how-to-test-if-your-device-is-SANE-compliant.md b/_articles/faq/how-to-test-if-your-device-is-SANE-compliant.md index ee320c0c..59d4c5d2 100644 --- a/_articles/faq/how-to-test-if-your-device-is-SANE-compliant.md +++ b/_articles/faq/how-to-test-if-your-device-is-SANE-compliant.md @@ -29,7 +29,5 @@ There are 3 ways to verify whether your scanner is SANE compliant. * [Recommended] Try the scanner with the XSane app on Linux. Check out the [official guide](http://www.fifi.org/doc/xsane/html/sane-xsane-doc.html) - - > [More info>>](/assets/docs/Scanning_with_XSane.pdf) * Check out the [official list](http://www.sane-project.org/sane-backends-1.0.25.html) of supported scanners. From 2beba88352362f56423418ae33e70dfab5293d76 Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Thu, 30 Jul 2026 16:44:57 +0800 Subject: [PATCH 32/47] docs(faq): replace deprecated blank-page detection APIs in use-blank-page-as-a-separator FAQ Per issue discussion (lyzhang0113, tony-xlh), fully replace IsBlankImageExpress()/IsBlankImage() with IsBlankImageAsync() rather than just noting it as an alternative. The main sample's CheckBlankPage becomes async to await the new API. The "Using Page Standard Deviation" snippet only worked as a side effect of calling the old sync method to populate BlankImageCurrentStdDev, which IsBlankImageAsync explicitly does not affect -- replaced it with IsBlankImageAsync's own minBlockHeight/maxBlockHeight tuning options, with no mention of the deprecated stddev/threshold APIs. Fixes #1053 Co-Authored-By: Claude Sonnet 5 --- .../faq/use-blank-page-as-a-separator.md | 23 +++++-------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/_articles/faq/use-blank-page-as-a-separator.md b/_articles/faq/use-blank-page-as-a-separator.md index 0a6d619b..984e8a83 100644 --- a/_articles/faq/use-blank-page-as-a-separator.md +++ b/_articles/faq/use-blank-page-as-a-separator.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, document classification, separator breadcrumbText: How to use a blank page as a separator? description: How to use a blank page as a separator? date: 2022-01-26 13:39:43 +0000 -last_modified: 2024-09-19 08:47:35 +0000 +last_modified: 2026-07-30 08:44:14 +0000 --- # Document Saving @@ -20,7 +20,7 @@ You are scanning in multiple documents with a blank page separating them and wou ### Solution -In order to do this we will scan in all the sheets, then use [IsBlankImageExpress](/_articles/info/api/WebTwain_Buffer.md#isblankimageexpress){:target="_blank"} to detect whether or not it is blank. If the sheet is blank we will then remove it from the buffer and save the previous set of sheets. In order to accomplish this task we are going to use the event OnPostAllTransfers, which fires after all scans are complete in order to check whether or not any pages are blank. +In order to do this we will scan in all the sheets, then use [IsBlankImageAsync](/_articles/info/api/WebTwain_Buffer.md#isblankimageasync){:target="_blank"} (available since v18.4 on Windows, v19.2 on macOS/Linux) to detect whether or not it is blank. If the sheet is blank we will then remove it from the buffer and save the previous set of sheets. In order to accomplish this task we are going to use the event OnPostAllTransfers, which fires after all scans are complete in order to check whether or not any pages are blank. ```javascript function Dynamsoft_OnReady() { @@ -61,11 +61,11 @@ function OnFailure(errorCode, errorString) { alert(errorString); } -function CheckBlankPage() { //Function for checking a blank page, called when OnPostAllTransfers is triggered +async function CheckBlankPage() { //Function for checking a blank page, called when OnPostAllTransfers is triggered if (DWTObject) { //Ensure there is a DWTObject var startindex = 0; // Assume it starts from the first page in the buffer. for (var i = 0; i < DWTObject.HowManyImagesInBuffer; i++) { //Go through each image in the buffer. - if (DWTObject.IsBlankImageExpress(i)) { + if (await DWTObject.IsBlankImageAsync(i)) { DWTObject.RemoveImage(i); // remove the blank page from the buffer. if (i != 0) { var imageRecord = []; @@ -103,19 +103,8 @@ function CheckBlankPage() { //Function for checking a blank page, called when On } ``` -If your application is having a hard time detecting blank pages(there is some areas around the edge of the blank page with non-blank spots) or you are using coloured pages you may want to use the pages standard deviation instead. You may use the following Snippet instead. - -**Using Page Standard Deviation:** +If your application is having a hard time detecting blank pages accurately (e.g. non-blank spots around the edges, or coloured pages), you can tune `IsBlankImageAsync()`'s sensitivity via its `minBlockHeight`/`maxBlockHeight` options (the expected pixel height of a block of text/content — default 20/30): ```javascript -function CheckBlankPage(){ //Function for checking a blank page, called when OnPostAllTransfers is triggered - if(DWTObject){//Ensure there is a DWTObject - for(var i = 0; i < DWTObject.HowManyImagesInBuffer;i++){//Go through each image in the buffer. - if(DWTObject.IsBlankImageExpress(i)){}//Make Blank Image run, but do not use the result - if(DWTObject.BlankImageCurrentStdDev < 15.0){//set a standard deviation for the program to use - //...... - } - } - } -} +var isBlank = await DWTObject.IsBlankImageAsync(i, { minBlockHeight: 10, maxBlockHeight: 40 }); ``` From 8270fd5a7f2a2d5a1e6c4b215317a6bec75f9724 Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Thu, 30 Jul 2026 16:51:27 +0800 Subject: [PATCH 33/47] docs(faq): remove outdated scanner-not-shown-or-not-responding-in-the-browser FAQ Per issue discussion (lyzhang0113, ztyyLV), this FAQ documents IE/ActiveX-era troubleshooting that no longer applies since ActiveX support was discontinued in v19.0. Removed the article and its listing in index.md (renumbering the remaining Capture/Image Source entries). Fixes #1060 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/index.md | 5 +- ...-shown-or-not-responding-in-the-browser.md | 50 ------------------- 2 files changed, 2 insertions(+), 53 deletions(-) delete mode 100644 _articles/faq/scanner-not-shown-or-not-responding-in-the-browser.md diff --git a/_articles/faq/index.md b/_articles/faq/index.md index b9378250..06341719 100644 --- a/_articles/faq/index.md +++ b/_articles/faq/index.md @@ -51,9 +51,8 @@ description: Dynamic Web TWAIN SDK Documentation FAQ 29. [How to scan documents on mobile devices?](/_articles/faq/how-to-scan-documents-on-mobile-devices.md) 30. [Do you support fingerprint or medical imaging devices?](/_articles/faq/fingerprint-medical-imaging.md) 31. [Is the AcquireImage() method synchronous or asynchronous?](/_articles/faq/acquireimage-sync-or-async.md) -32. [Why is my scanner not shown or not responding in the browser?](/_articles/faq/scanner-not-shown-or-not-responding-in-the-browser.md) -33. [How can I support WIA scanner drivers in my application?](/_articles/faq/support-wia-scanner-drivers.md) -34. [Why are my images coming out distorted in MacOS Sonoma?](/_articles/faq/macos-sonoma-distorted-scans.md) +32. [How can I support WIA scanner drivers in my application?](/_articles/faq/support-wia-scanner-drivers.md) +33. [Why are my images coming out distorted in MacOS Sonoma?](/_articles/faq/macos-sonoma-distorted-scans.md) ## Image Viewer diff --git a/_articles/faq/scanner-not-shown-or-not-responding-in-the-browser.md b/_articles/faq/scanner-not-shown-or-not-responding-in-the-browser.md deleted file mode 100644 index 5247f674..00000000 --- a/_articles/faq/scanner-not-shown-or-not-responding-in-the-browser.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: default-layout -noTitleIndex: true -needAutoGenerateSidebar: true -title: Why is my scanner not shown or not responding in the browser? -keywords: Dynamic Web TWAIN, Capture/ Image Source, scanner not shown, scanner not responding -breadcrumbText: Why is my scanner not shown or not responding in the browser? -description: Why is my scanner not shown or not responding in the browser? -date: 2022-01-05 15:14:32 +0000 -last_modified: 2022-10-21 14:05:54 +0000 ---- - -# Capture/Image Source - -## Why is my scanner not shown or not responding in the browser? - -### Symptom - -Sometimes when you are using a scanning page built with Dynamic Web TWAIN, you will encounter an issue where your scanner is not shown, not responding or shown as busy in the browser. - -### Causes - -1. The scanner is not connected to the machine or the scanner driver is not installed. - Especially when you are using **64-bit Internet Explorer** but you don't have the 64-bit scanner (TWAIN) driver installed on the machine. - -2. The Browser doesn't have enough permission to access the scanner driver. - This mostly happens on **Windows 7/Vista/2008 OS** where high security level is applied to **Internet Explorer**. It would also happen in Firefox 4+ and Safari. - -### Solution - -1. Make sure the driver of the scanner is installed and the scanner is running and properly connected to the machine. You should be able to see the scanner in the Windows' Scanners and Cameras Wizard. And you can use Twacker to check if the driver is TWAIN compatible. - - In addition, if you are using 64-bit Internet Explorer, please make sure you have a 64-bit TWAIN driver of the scanner installed. - -2. **For Firefox, Safari, etc.**, please go to C:\Windows\twain_32 and you should be able to find that your scanner driver has a sub-folder there. In order to show the scanner as an available source, you need to copy the dlls in the sub-folder and paste them to the folder C:\Windows\System32 (or C:\Windows\SysWOW64 on a 64-bit OS). - - For Internet Explorer, you can try one of the following tricks: - 1. Add the website to the zone of trusted sites. - IE | Tools | Internet Options | Security | Trusted Sites. - - 2. Turn Protected Mode off. - To turn off the protected mode of IE, you can go to Tools | Internet Options | Security and uncheck "Enable Protected Mode (requires restarting Internet Explorer)" option. - - FYI, Protected Mode helps protect users from attack by running an IE process with greatly restricted privileges. It uses the Windows Vista integrity mechanism to run the Internet Explorer process at low integrity. - - But with Protected Mode turned on, you may encounter problems when running Dynamic Web TWAIN applications. - - 3. To temporarily elevate permissions of IE. - Click Start, point to All Programs, right-click IE, and then select Run as Administrator (with Administrator permissions). - From af7efc6a5b4d5400bf20591577c957a010b21521 Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Thu, 30 Jul 2026 16:59:59 +0800 Subject: [PATCH 34/47] docs(faq): remove HTTPDownloadDirectly() reference from load-pdf-files FAQ Per issue discussion, HTTPDownloadDirectly() only exists in a custom version, isn't related to rasterization, and has been removed from the public API docs -- drop it from the "may trigger rasterization" list. Fixes #1039 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/load-pdf-files.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/_articles/faq/load-pdf-files.md b/_articles/faq/load-pdf-files.md index 7eb41b00..eafc19ba 100644 --- a/_articles/faq/load-pdf-files.md +++ b/_articles/faq/load-pdf-files.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Addon, load pdf/a breadcrumbText: How can I load PDF/A files into the Dynamic Web TWAIN SDK? description: How can I load PDF/A files into the Dynamic Web TWAIN SDK? date: 2021-12-01 01:09:41 +0000 -last_modified: 2025-12-11 14:20:54 +0000 +last_modified: 2026-07-30 08:59:23 +0000 --- # Addon @@ -53,4 +53,3 @@ Rasterization may occur when using any of these APIs (including drag-and-drop): - [ `HTTPDownload()` ](/_articles/info/api/WebTwain_IO.md#httpdownload) - [ `HTTPDownloadEx()` ](/_articles/info/api/WebTwain_IO.md#httpdownloadex) - [ `HTTPDownloadThroughPost()` ](/_articles/info/api/WebTwain_IO.md#httpdownloadthroughpost) -- [ `HTTPDownloadDirectly()` ](/_articles/info/api/WebTwain_IO.md#httpdownloaddirectly) From f5fc243c9eaafa853a6e4344ba5e8e5d454c5130 Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Thu, 30 Jul 2026 17:03:20 +0800 Subject: [PATCH 35/47] docs(faq): fix undefined WebTWAIN object in the-connection-with-the-server-was-terminated-abnormally FAQ Per issue discussion, this FAQ remains relevant (ties to a real support ticket about PHP upload size limits). WebTWAIN was the old name for DWTObject in earlier SDK versions; renamed it to match current samples. strHTTPServer assignment kept as-is. Fixes #1052 Co-Authored-By: Claude Sonnet 5 --- ...he-connection-with-the-server-was-terminated-abnormally.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_articles/faq/the-connection-with-the-server-was-terminated-abnormally.md b/_articles/faq/the-connection-with-the-server-was-terminated-abnormally.md index 5b8c1353..e5f718f2 100644 --- a/_articles/faq/the-connection-with-the-server-was-terminated-abnormally.md +++ b/_articles/faq/the-connection-with-the-server-was-terminated-abnormally.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Error Troubleshooting breadcrumbText: The connection with the server was terminated abnormally description: The connection with the server was terminated abnormally date: 2021-07-14 18:55:57 +0000 -last_modified: 2022-06-02 15:30:49 +0000 +last_modified: 2026-07-30 09:02:54 +0000 --- # Error Troubleshooting @@ -35,7 +35,7 @@ When you upload images from Dynamic Web TWAIN's buffer, you may receive the foll ```javascript strHTTPServer = location.hostname; - WebTWAIN.HTTPPort = location.port == "" ? 80 : location.port; + DWTObject.HTTPPort = location.port == "" ? 80 : location.port; ``` 3. Please reset the maximum transferable data size: From 2590adf2cf3013629c64a6d9c0f28f6ea44fce1f Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Thu, 30 Jul 2026 17:11:47 +0800 Subject: [PATCH 36/47] docs(faq): remove safari-26-2-regression FAQ Per issue discussion (lyzhang0113, tony-xlh), this issue is now fixed on both the Safari and DWT 19.3.1 sides, and the FAQ is minor enough to just delete rather than update. Removed the article and its listing in index.md (renumbering the remaining Error Troubleshooting entry). Fixes #1045 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/index.md | 3 +- _articles/faq/safari-26-2-regression.md | 37 ------------------------- 2 files changed, 1 insertion(+), 39 deletions(-) delete mode 100644 _articles/faq/safari-26-2-regression.md diff --git a/_articles/faq/index.md b/_articles/faq/index.md index 06341719..234ed108 100644 --- a/_articles/faq/index.md +++ b/_articles/faq/index.md @@ -208,8 +208,7 @@ description: Dynamic Web TWAIN SDK Documentation FAQ 32. [Why am I unable to load the TIFF file into Dynamic Web TWAIN?](/_articles/faq/unable-to-load-4-bit-tiff.md) 33. [Error message - CORS Errors caused by local network access permissions when using Chromium 142 and later](/_articles/faq/chromium-142-local-network-access-issue.md) 34. [Error message - File is Damaged and Can’t Be Opened in macOS](/_articles/faq/file-damaged-on-macos.md) -35. [Safari 26.2 Regression Causing Dynamic Web TWAIN v19.3 Auto-Reconnect Failure on macOS](/_articles/faq/safari-26-2-regression.md) -36. [File Dialog Closes Immediately on Linux](/_articles/faq/file-dialog-on-linux.md) +35. [File Dialog Closes Immediately on Linux](/_articles/faq/file-dialog-on-linux.md) ## Licensing and Purchase diff --git a/_articles/faq/safari-26-2-regression.md b/_articles/faq/safari-26-2-regression.md deleted file mode 100644 index efe5a107..00000000 --- a/_articles/faq/safari-26-2-regression.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: default-layout -noTitleIndex: true -needAutoGenerateSidebar: true -title: Safari 26.2 Regression Causing Dynamic Web TWAIN v19.3 Auto-Reconnect Failure on macOS -keywords: Dynamic Web TWAIN, macos, Auto-Reconnect, 19.3, Safari -breadcrumbText: Safari 26.2 Regression Causing Dynamic Web TWAIN v19.3 Auto-Reconnect Failure on macOS -description: Safari 26.2 Regression Causing Dynamic Web TWAIN v19.3 Auto-Reconnect Failure on macOS -date: 2025-12-31 13:18:47 +0000 -last_modified: 2025-12-31 13:18:47 +0000 ---- - -# Safari 26.2 Regression Causing Dynamic Web TWAIN v19.3 Auto-Reconnect Failure on macOS - -### Symptom - -After upgrading to Safari 26.2 on macOS, a compatibility issue was observed with Dynamic Web TWAIN v19.3. - -When a site installs or updates the Dynamic Web TWAIN v19.3 Service for the first time, the automatic connection and reconnect mechanism fails. A browser refresh is required to restore normal behavior. - -### Issue characteristics - -- Only occurs in Safari 26.2 -- Does not occur in Safari 26.1 or earlier versions -- Does not occur in Dynamic Web TWAIN versions prior to 19.3 - -### Reason - -Dynamic Web TWAIN 19.3 introduced a new configuration in reconnect requests: `targetAddressSpace: "loopback"`, following the Chrome Local Network Access documentation to explicitly indicate that the request targets the loopback address (127.0.0.1). - -In Safari 26.1 and earlier, this configuration is ignored and requests are sent normally. - -In Safari 26.2, `fetch` throws a `TypeError` when this configuration is present, causing the request to fail before being sent. As a result, `reconnect` cannot be implemented even though the Dynamsoft Service is installed and running. - -### Update - -The WebKit team has identified this issue as a regression in Safari 26.2 and has already fixed it. The fix will be included in an upcoming Safari release. \ No newline at end of file From cb807b0eb48650911932c70e2de3e540d886e0e2 Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Thu, 30 Jul 2026 17:17:59 +0800 Subject: [PATCH 37/47] docs(faq): rewrite viewer-size-auto-resize FAQ with correct resize approaches - Converted raw section labels to proper ### headings, matching the convention used elsewhere in the FAQ set. - Replaced the incorrect claim that DWT's own `resize` event should trigger the size calculation (it actually fires after the resize) with the two approaches from the issue discussion (tony-xlh): percentage-based sizing, or a window resize listener with absolute pixel values. - Dropped the IE-specific window.innerWidth/innerHeight fallback note, since ActiveX/IE support was discontinued in v19.0. Fixes #1054 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/viewer-size-auto-resize.md | 42 +++++++++++++++++------- 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/_articles/faq/viewer-size-auto-resize.md b/_articles/faq/viewer-size-auto-resize.md index 7dba1cad..3017faa0 100644 --- a/_articles/faq/viewer-size-auto-resize.md +++ b/_articles/faq/viewer-size-auto-resize.md @@ -7,24 +7,27 @@ keywords: Dynamic Web TWAIN, Image Viewer, auto resize breadcrumbText: Can the size of the image viewer auto resize when the browser window size changes? description: Can the size of the image viewer auto resize when the browser window size changes? date: 2021-12-09 11:34:50 +0000 -last_modified: 2022-06-10 04:40:03 +0000 +last_modified: 2026-07-30 09:17:32 +0000 --- # Image Viewer ## Can the size of the image viewer auto resize when the browser window size changes? -Scenario +### Scenario + When using Dynamic Web TWAIN in different environments, it may be necessary to change the size of the viewer within the window automatically. -Steps -This can be done in two different ways +### Solution + +There are two parts to this: + +1. Set the viewer's initial size based on the window size when the page loads. +2. Keep the viewer's size in sync as the window is resized afterward. -1. Set the viewer size when the page is opened based upon the size of the window -2. Change the viewer size when the window size is adjusted based on the new size of the window +**1. Setting the initial size** -For option 1: -You may change the container size based on the window size by setting the following in your javascript file (before any other Dynamsoft-related operations): +You can size the container based on the window size by setting the following in your JavaScript file (before any other Dynamsoft-related operations): ```javascript Dynamsoft.DWT.Containers = [ @@ -36,14 +39,29 @@ Dynamsoft.DWT.Containers = [ ]; ``` -and in dynamsoft.webtwain.config.js file set: +and in `dynamsoft.webtwain.config.js`, set: ```javascript Dynamsoft.DWT.Containers = []; ``` -Note: window.innerWidth and window.innerHeight do not work in IE. You can replace it with document.documentElement.clientWidth and document.documentElement.clientHeight. +**2. Keeping the size in sync on resize** + +There are two common approaches: + +- Set the viewer's `width`/`height` to a percentage value so it fills its container proportionally, and let your container's own layout/CSS handle resizing: + + ```javascript + DWTObject.Viewer.width = "100%"; + DWTObject.Viewer.height = "100%"; + ``` -For option 2: +- If you need to calculate an absolute pixel size based on the browser window, listen for the browser's native `resize` event and update the viewer's `width`/`height` accordingly: -Write your own function to calculate the Container's width and height according to the browser's size. Then, assign the values to our API's Height & Width. Finally, use the event [resize](/_articles/info/api/WebTwain_Viewer.md#resize){:target="_blank"} to trigger the function. + ```javascript + function updateSize() { + DWTObject.Viewer.width = window.innerWidth * 0.5; + DWTObject.Viewer.height = window.innerHeight * 0.8; + } + window.addEventListener('resize', updateSize); + ``` From eba4ee3b10f9562a62de2d71cc50c32d761bfa9c Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Thu, 30 Jul 2026 17:26:23 +0800 Subject: [PATCH 38/47] docs(faq): replace deprecated GetDeviceType() in hide-webcam-from-source-list FAQ Per issue discussion (tony-xlh), GetDeviceType() was TWAIN-specific and deprecated since v18.0. Replaced with checking the CAP_CAMERAPREVIEWUI capability via getCapabilities() to identify camera sources, with no mention of the deprecated API. Reframed the existing source-name keyword check as the simpler workaround since it doesn't require opening each source. Fixes #1040 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/hide-webcam-from-source-list.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_articles/faq/hide-webcam-from-source-list.md b/_articles/faq/hide-webcam-from-source-list.md index 1634f34c..56c02a16 100644 --- a/_articles/faq/hide-webcam-from-source-list.md +++ b/_articles/faq/hide-webcam-from-source-list.md @@ -7,15 +7,15 @@ keywords: Dynamic Web TWAIN, Capture/ Image Source, hide, webcam breadcrumbText: Can I hide webcam devices from the select source list? description: Can I hide webcam devices from the select source list? date: 2021-12-08 03:01:32 +0000 -last_modified: 2022-06-10 04:40:03 +0000 +last_modified: 2026-07-30 09:25:56 +0000 --- # Capture/Image Source ## Can I hide webcam devices from the select source list? -Many webcam devices may use WIA drivers. As explained in this article, WIA drivers can also be detected by the Dynamic Web TWAIN SDK. If you need to exclude webcam/camera devices, you can try using [GetDeviceType](/_articles/info/api/WebTwain_Acquire.md#getdevicetype){:target="_blank"} API to verify if a source is a scanner or not. If not, you can skip it from your source list. +Many webcam devices may use WIA drivers. As explained in this article, WIA drivers can also be detected by the Dynamic Web TWAIN SDK. For devices accessed via TWAIN, you can check whether the source supports the `CAP_CAMERAPREVIEWUI` capability using [getCapabilities](/_articles/info/api/WebTwain_Acquire.md#getcapabilities){:target="_blank"} — sources that support it are typically cameras, so you can skip them from your source list. -Please note that you would need to call [OpenSource](/_articles/info/api/WebTwain_Acquire.md#opensource){:target="_blank"} API to open a source before you can inspect its device type. If there are any offline devices in the source name list, this process would be interrupted. +Please note that you would need to call [OpenSource](/_articles/info/api/WebTwain_Acquire.md#opensource){:target="_blank"} API to open a source before you can query its capabilities. If there are any offline devices in the source name list, this process would be interrupted. -Another workaround is to exclude some sources by detecting certain keywords from the source name list. E.g. you can try to exclude any source names with 'camera' or 'webcam'. Please refer to this [FAQ](/_articles/faq/hide-offline-scanners-from-source-list.md){:target="_blank"} for more details. +A simpler workaround that doesn't require opening each source is to exclude sources by detecting certain keywords in the source name list — e.g. excluding any source names containing 'camera' or 'webcam'. Please refer to this [FAQ](/_articles/faq/hide-offline-scanners-from-source-list.md){:target="_blank"} for more details. From f3de8c133cec81e8622b362ec8f2bce5f6b1d692 Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Thu, 30 Jul 2026 17:31:51 +0800 Subject: [PATCH 39/47] docs(faq): fix dead links in component-needs-to-be-installed-on-end-user-machine FAQ Per issue discussion (lyzhang0113, tony-xlh): - Dropped the "Desktop Service Edition" framing entirely (dead anchor, and the concept itself is being retired). - Fixed the client-side upgrade link to point to extended-usage/dynamsoft-service-configuration.md. - Kept the Remote Scan mention but pointed it to the external Remote Scan docs site (same link index.md already uses) instead of the nonexistent internal how-to-enable-remote-scan.md. Fixes #1042 Co-Authored-By: Claude Sonnet 5 --- ...component-needs-to-be-installed-on-end-user-machine.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_articles/faq/component-needs-to-be-installed-on-end-user-machine.md b/_articles/faq/component-needs-to-be-installed-on-end-user-machine.md index e251794f..a2a48b64 100644 --- a/_articles/faq/component-needs-to-be-installed-on-end-user-machine.md +++ b/_articles/faq/component-needs-to-be-installed-on-end-user-machine.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Project Deployment and End-user Installation, insta breadcrumbText: Is there any component of the Dynamic Web TWAIN SDK that needs to be installed on end-user machines? description: Is there any component of the Dynamic Web TWAIN SDK that needs to be installed on end-user machines? date: 2021-12-11 06:47:21 +0000 -last_modified: 2026-01-21 15:24:26 -08:00 +last_modified: 2026-07-30 09:31:25 +0000 --- View all FAQs about [Project Deployment and End-user Installation]( @@ -15,8 +15,8 @@ https://www.dynamsoft.com/web-twain/docs/faq/#project-deployment-and-end-user-in # Is there any component of the Dynamic Web TWAIN SDK that needs to be installed on end-user machines? -For the [Desktop Service Edition](/_articles/general-usage/initialization.md#desktop-service-edition){:target="_blank"}, end users need the Dynamic Web TWAIN Service installed locally (this was called “Dynamsoft Service” prior to v19.0). They are prompted to install it the first time they open your application. +End users need the Dynamic Web TWAIN Service installed locally (this was called "Dynamsoft Service" prior to v19.0). They are prompted to install it the first time they open your application. -When you upgrade Dynamic Web TWAIN, plan to reinstall the service on client machines if required. See [Update Dynamic Web TWAIN Service on the Client-side](/_articles/indepth/development/upgrade.md#update-dynamsoft-service-on-the-client-side){:target="_blank"} for details. +When you upgrade Dynamic Web TWAIN, plan to reinstall the service on client machines if required. See [Dynamic Web TWAIN Service Configuration](/_articles/extended-usage/dynamsoft-service-configuration.md){:target="_blank"} for details. -If you prefer zero client-side installation, enable Remote Scan. It routes scanning through a host machine’s service, so the browser client installs nothing. Learn how to enable it [here](/_articles/faq/how-to-enable-remote-scan.md){:target="_blank"}. +If you prefer zero client-side installation, enable Remote Scan. It routes scanning through a host machine's service, so the browser client installs nothing. See the [Remote Scan documentation](https://www.dynamsoft.com/remote-scan/docs/introduction/){:target="_blank"} for details on how to enable it. From a42ad0b5a81bd3844f984994b680d51515722efa Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Thu, 30 Jul 2026 17:34:09 +0800 Subject: [PATCH 40/47] docs(faq): remove nonexistent HTTPRequestswithCredentials note from XMLHttpRequest-cannot-load FAQ Per tony-xlh, this property doesn't exist and the note should just be removed. Fixes #1032 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/XMLHttpRequest-cannot-load.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/_articles/faq/XMLHttpRequest-cannot-load.md b/_articles/faq/XMLHttpRequest-cannot-load.md index 205f5021..8077c1eb 100644 --- a/_articles/faq/XMLHttpRequest-cannot-load.md +++ b/_articles/faq/XMLHttpRequest-cannot-load.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Error Troubleshooting, XMLHttpRequest breadcrumbText: XMLHttpRequest cannot load XXX description: XMLHttpRequest cannot load XXX date: 2021-12-03 23:26:46 +0000 -last_modified: 2026-01-23 06:35:12 -08:00 +last_modified: 2026-07-30 09:33:44 +0000 --- # Error Troubleshooting @@ -48,9 +48,3 @@ Try uploading to the same domain or update the server-side configuration to allo > After updating the server configuration file, you'll need to restart the server (i.e. IIS). > > If you are downloading a file, you might need to clear the browser cache because a cached file will not be requested again from the server, thus still no 'Access-Control-Allow-Origin' header will be presented. -> -> If you need to send cookies/credentials (e.g., Windows Authentication), enable credentials via code: -> -> ```javascript -> DWTObject.HTTPRequestswithCredentials = true; // adds withCredentials:true on upload requests -> ``` From 5ea5e2812db3d919aa0a1f145b794e9e2154e83a Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Thu, 30 Jul 2026 17:38:54 +0800 Subject: [PATCH 41/47] docs(faq): fix HTTPUpload() arity and field type in upload-multiple-files-at-a-time FAQ Per issue discussion (lyzhang0113, tony-xlh): HTTPUpload()'s multi-index upload only combines images for multi-page formats like PDF/TIFF, so the existing per-image ConvertToBlob + SetHTTPFormField loop is necessary to upload each scan as its own separate JPG file -- added a note explaining why. Fixed the final HTTPUpload() call to include the required indices/type/dataFormat parameters (empty indices since each image is already attached individually), and cast the image count to a string to match SetHTTPFormField's documented signature. Fixes #1031 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/upload-multiple-files-at-a-time.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/_articles/faq/upload-multiple-files-at-a-time.md b/_articles/faq/upload-multiple-files-at-a-time.md index cc6b4552..1ee2a49b 100644 --- a/_articles/faq/upload-multiple-files-at-a-time.md +++ b/_articles/faq/upload-multiple-files-at-a-time.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Document Saving, upload files breadcrumbText: How to upload multiple files at a time? description: How to upload multiple files at a time? date: 2022-08-29 18:03:43 +0000 -last_modified: 2024-09-19 08:47:35 +0000 +last_modified: 2026-07-30 09:38:19 +0000 --- # Document Saving @@ -20,6 +20,9 @@ After scanning multiple files, you might want to upload them one by one as indiv ### Solution: You can use the methods [ConvertToBlob](/_articles/info/api/WebTwain_IO.md#converttoblob) and [HTTPUpload](/_articles/info/api/WebTwain_IO.md#httpupload) to achieve this. +> [!NOTE] +> Passing multiple image indices directly to `HTTPUpload()` only produces one combined file, and only for multi-page formats like PDF or TIFF. To upload each scan as its own separate JPG file in a single request, convert each image to a blob and attach it as its own form field instead, as shown below. + ### Steps: 1. In JS, write code similar to the following: @@ -27,7 +30,7 @@ You can use the methods [ConvertToBlob](/_articles/info/api/WebTwain_IO.md#conve function UploadAsJPG() { var count = 0; DWTObject.ClearAllHTTPFormField(); - DWTObject.SetHTTPFormField("UploadedImagesCount",DWTObject.HowManyImagesInBuffer); + DWTObject.SetHTTPFormField("UploadedImagesCount", DWTObject.HowManyImagesInBuffer.toString()); function asyncFailureFunc(errorCode, errorString) { alert("ErrorCode: " + errorCode + "\r" + "ErrorString:" + errorString); @@ -51,7 +54,14 @@ function UploadAsJPG() { if (count < DWTObject.HowManyImagesInBuffer) { convertImage(count); } else { - DWTObject.HTTPUpload("http://localhost:90/saveUploadedJPG.aspx", onEmptyResponse, onServerReturnedSomething);// Please replace the URL with yours. + DWTObject.HTTPUpload( + "http://localhost:90/saveUploadedJPG.aspx", // Please replace the URL with yours. + [], + Dynamsoft.DWT.EnumDWT_ImageType.IT_JPG, + Dynamsoft.DWT.EnumDWT_UploadDataFormat.Binary, + onEmptyResponse, + onServerReturnedSomething + ); } }, asyncFailureFunc From ba08f4cdf9957bd8a9583954a180cb3b0cd0ca1c Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Thu, 30 Jul 2026 17:45:04 +0800 Subject: [PATCH 42/47] docs(faq): fix wrong ThumbnailViewerSettings property names in create-thumbnail-viewer-to-navigate-images FAQ Per tony-xlh's confirmation: renamed hoverBackground to hoverPageBackground (matches interfaces.md and the API doc's own example), and replaced the nonexistent showPageNumber setting with a thumbnail.updatePageNumberStyle({ visibility: "hidden" }) call, which is the actual mechanism (ThumbnailViewer shares the same APIs as Viewer). Fixes #1033 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/create-thumbnail-viewer-to-navigate-images.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_articles/faq/create-thumbnail-viewer-to-navigate-images.md b/_articles/faq/create-thumbnail-viewer-to-navigate-images.md index 7ebdc727..e7964d43 100644 --- a/_articles/faq/create-thumbnail-viewer-to-navigate-images.md +++ b/_articles/faq/create-thumbnail-viewer-to-navigate-images.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Image Viewer, navigate images, thumbnail viewer breadcrumbText: How can I create a thumbnail viewer to view images? description: How can I create a thumbnail viewer to view images? date: 2021-12-09 11:34:50 +0000 -last_modified: 2024-09-19 08:47:35 +0000 +last_modified: 2026-07-30 09:44:34 +0000 --- # Image Viewer @@ -35,10 +35,9 @@ var thumbnailViewerSettings = { allowKeyboardControl: true, allowPageDragging: true, allowResizing: false, - showPageNumber: false, pageBackground: "transparent", pageBorder: "1px solid rgb(238, 238, 238)", - hoverBackground: "rgb(239, 246, 253)", + hoverPageBackground: "rgb(239, 246, 253)", hoverPageBorder: "1px solid rgb(238, 238, 238)", placeholderBackground: "rgb(251, 236, 136)", selectedPageBorder: "1px solid rgb(125,162,206)", @@ -47,4 +46,5 @@ var thumbnailViewerSettings = { var thumbnail = DWTObject.Viewer.createThumbnailViewer(thumbnailViewerSettings); thumbnail.show(); +thumbnail.updatePageNumberStyle({ visibility: "hidden" }); // Hide the page number on each thumbnail ``` From 7cba4fa250b849a797270585628589599405a22e Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Thu, 30 Jul 2026 18:02:05 +0800 Subject: [PATCH 43/47] docs(faq): rename detect-paper-on-flatbed to detect-paper-on-feeder, fix content Per tony-xlh: the "flatbed" framing was a mistake -- the documented API (IfFeederLoaded) is entirely about the ADF feeder, not the flatbed, and there's no dedicated flatbed-paper-detection API. Renamed the file/URL and updated title/keywords/heading accordingly, updated the link in index.md, and added the missing IfFeederEnabled = true precondition (IfFeederLoaded is only valid when IfFeederEnabled and IfPaperDetectable are both true). Fixes #1034 Co-Authored-By: Claude Sonnet 5 --- ...aper-on-flatbed.md => detect-paper-on-feeder.md} | 13 +++++++------ _articles/faq/index.md | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) rename _articles/faq/{detect-paper-on-flatbed.md => detect-paper-on-feeder.md} (81%) diff --git a/_articles/faq/detect-paper-on-flatbed.md b/_articles/faq/detect-paper-on-feeder.md similarity index 81% rename from _articles/faq/detect-paper-on-flatbed.md rename to _articles/faq/detect-paper-on-feeder.md index 34e4c7da..b70d71d0 100644 --- a/_articles/faq/detect-paper-on-flatbed.md +++ b/_articles/faq/detect-paper-on-feeder.md @@ -2,17 +2,17 @@ layout: default-layout noTitleIndex: true needAutoGenerateSidebar: true -title: Can the Dynamic Web TWAIN SDK detect whether papers exist on the flatbed? -keywords: Dynamic Web TWAIN, Capture/ Image Source, detect paper, flatbed -breadcrumbText: Can the Dynamic Web TWAIN SDK detect whether papers exist on the flatbed? -description: Can the Dynamic Web TWAIN SDK detect whether papers exist on the flatbed? +title: Can the Dynamic Web TWAIN SDK detect whether papers exist in the feeder? +keywords: Dynamic Web TWAIN, Capture/ Image Source, detect paper, feeder, ADF +breadcrumbText: Can the Dynamic Web TWAIN SDK detect whether papers exist in the feeder? +description: Can the Dynamic Web TWAIN SDK detect whether papers exist in the feeder? date: 2021-12-08 03:01:32 +0000 -last_modified: 2024-09-19 08:47:35 +0000 +last_modified: 2026-07-30 10:01:04 +0000 --- # Capture/Image Source -## Can the Dynamic Web TWAIN SDK detect whether papers exist on the flatbed? +## Can the Dynamic Web TWAIN SDK detect whether papers exist in the feeder? Yes. You can use [IfFeederLoaded](/_articles/info/api/WebTwain_Acquire.md#iffeederloaded){:target="_blank"} API to inspect whether papers are loaded in the feeder of your current scanner. Before calling this API, please use [IfPaperDetectable](/_articles/info/api/WebTwain_Acquire.md#ifpaperdetectable){:target="_blank"} to inspect whether your current scanner hardware has a sensor to detect papers. @@ -21,6 +21,7 @@ Code Example: ```javascript DWTObject.SelectSource(); DWTObject.OpenSource(); +DWTObject.IfFeederEnabled = true; if(DWTObject.IfPaperDetectable) if(DWTObject.IfFeederLoaded) DWTObject.AcquireImage(); diff --git a/_articles/faq/index.md b/_articles/faq/index.md index 234ed108..7f029e1b 100644 --- a/_articles/faq/index.md +++ b/_articles/faq/index.md @@ -38,7 +38,7 @@ description: Dynamic Web TWAIN SDK Documentation FAQ 16. [Can the Dynamic Web TWAIN SDK automatically rotate upside-down pages during the document scanning process?](/_articles/faq/automatically-rotate-upside-down-pages.md) 17. [Can the Dynamic Web TWAIN SDK automatically detect borders of the scanned document and crop it out?](/_articles/faq/automatically-detect-border.md) 18. [Can I set my document scanner to scan x number of pages instead of all pages from the automatic document feeder (ADF)?](/_articles/faq/scan-x-pages-from-automatic-document-feeder.md) -19. [Can the Dynamic Web TWAIN SDK detect whether papers exist on the flatbed?](/_articles/faq/detect-paper-on-flatbed.md) +19. [Can the Dynamic Web TWAIN SDK detect whether papers exist in the feeder?](/_articles/faq/detect-paper-on-feeder.md) 20. [How can I get a list of supported resolution/DPI values from the document scanner?](/_articles/faq/list-supported-resolution-DPI.md) 21. [How can I use a custom capability of my scanner hardware when there is no direct API to set it?](/_articles/faq/custom-capability.md) 22. [Is there a limit on the number of pages I can scan at a time? Where do you store them after scanning?](/_articles/faq/limit-on-scanned-pages.md) From 563171b61a481b93f4eca2b943b0e328b44ba496 Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Thu, 30 Jul 2026 18:08:09 +0800 Subject: [PATCH 44/47] Revert "docs(faq): fix HTTPUpload() arity and field type in upload-multiple-files-at-a-time FAQ" This reverts commit 5ea5e2812db3d919aa0a1f145b794e9e2154e83a. --- _articles/faq/upload-multiple-files-at-a-time.md | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/_articles/faq/upload-multiple-files-at-a-time.md b/_articles/faq/upload-multiple-files-at-a-time.md index 1ee2a49b..cc6b4552 100644 --- a/_articles/faq/upload-multiple-files-at-a-time.md +++ b/_articles/faq/upload-multiple-files-at-a-time.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Document Saving, upload files breadcrumbText: How to upload multiple files at a time? description: How to upload multiple files at a time? date: 2022-08-29 18:03:43 +0000 -last_modified: 2026-07-30 09:38:19 +0000 +last_modified: 2024-09-19 08:47:35 +0000 --- # Document Saving @@ -20,9 +20,6 @@ After scanning multiple files, you might want to upload them one by one as indiv ### Solution: You can use the methods [ConvertToBlob](/_articles/info/api/WebTwain_IO.md#converttoblob) and [HTTPUpload](/_articles/info/api/WebTwain_IO.md#httpupload) to achieve this. -> [!NOTE] -> Passing multiple image indices directly to `HTTPUpload()` only produces one combined file, and only for multi-page formats like PDF or TIFF. To upload each scan as its own separate JPG file in a single request, convert each image to a blob and attach it as its own form field instead, as shown below. - ### Steps: 1. In JS, write code similar to the following: @@ -30,7 +27,7 @@ You can use the methods [ConvertToBlob](/_articles/info/api/WebTwain_IO.md#conve function UploadAsJPG() { var count = 0; DWTObject.ClearAllHTTPFormField(); - DWTObject.SetHTTPFormField("UploadedImagesCount", DWTObject.HowManyImagesInBuffer.toString()); + DWTObject.SetHTTPFormField("UploadedImagesCount",DWTObject.HowManyImagesInBuffer); function asyncFailureFunc(errorCode, errorString) { alert("ErrorCode: " + errorCode + "\r" + "ErrorString:" + errorString); @@ -54,14 +51,7 @@ function UploadAsJPG() { if (count < DWTObject.HowManyImagesInBuffer) { convertImage(count); } else { - DWTObject.HTTPUpload( - "http://localhost:90/saveUploadedJPG.aspx", // Please replace the URL with yours. - [], - Dynamsoft.DWT.EnumDWT_ImageType.IT_JPG, - Dynamsoft.DWT.EnumDWT_UploadDataFormat.Binary, - onEmptyResponse, - onServerReturnedSomething - ); + DWTObject.HTTPUpload("http://localhost:90/saveUploadedJPG.aspx", onEmptyResponse, onServerReturnedSomething);// Please replace the URL with yours. } }, asyncFailureFunc From dbb154d905407a053644990c85b0593d3889757d Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Thu, 30 Jul 2026 18:10:03 +0800 Subject: [PATCH 45/47] docs(faq): rephrase upload-multiple-files-at-a-time FAQ for clarity Per correction: the original 3-arg HTTPUpload() call is valid here since each image is already attached individually as its own form field via SetHTTPFormField -- no revert of the code was needed, just clearer prose explaining the approach and why the final HTTPUpload() call doesn't need to specify indices. Co-Authored-By: Claude Sonnet 5 --- _articles/faq/upload-multiple-files-at-a-time.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/_articles/faq/upload-multiple-files-at-a-time.md b/_articles/faq/upload-multiple-files-at-a-time.md index cc6b4552..a2b760f8 100644 --- a/_articles/faq/upload-multiple-files-at-a-time.md +++ b/_articles/faq/upload-multiple-files-at-a-time.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Document Saving, upload files breadcrumbText: How to upload multiple files at a time? description: How to upload multiple files at a time? date: 2022-08-29 18:03:43 +0000 -last_modified: 2024-09-19 08:47:35 +0000 +last_modified: 2026-07-30 10:09:28 +0000 --- # Document Saving @@ -15,10 +15,13 @@ last_modified: 2024-09-19 08:47:35 +0000 ## How to upload multiple files at a time? ### Scenario: -After scanning multiple files, you might want to upload them one by one as individual images. Before version 13.1, you have to call the upload method(s) multiple times. From version 13.1+, you can do this in one go. +After scanning multiple documents, you may want to send each one to your server as its own separate file in a single HTTP request, rather than calling an upload method separately for each image. Before version 13.1, this required multiple calls to the upload method(s). From version 13.1 onward, you can send them all in one request instead, as shown below. ### Solution: -You can use the methods [ConvertToBlob](/_articles/info/api/WebTwain_IO.md#converttoblob) and [HTTPUpload](/_articles/info/api/WebTwain_IO.md#httpupload) to achieve this. +Convert each image to a JPG file (as a Blob) using [ConvertToBlob](/_articles/info/api/WebTwain_IO.md#converttoblob), attach each one as its own form field using [SetHTTPFormField](/_articles/info/api/WebTwain_IO.md#sethttpformfield), then call [HTTPUpload](/_articles/info/api/WebTwain_IO.md#httpupload) once at the end to submit everything together. + +> [!NOTE] +> Because each image is already attached individually as its own form field, the final `HTTPUpload()` call below doesn't need to specify which images to send — it simply submits the form. This is different from passing image indices directly to `HTTPUpload()`, which only combines multiple images into a single file for multi-page formats like PDF or TIFF. ### Steps: From 581ae2898d48549dce45cad7b8aaf743f8286268 Mon Sep 17 00:00:00 2001 From: lyzhang0113 Date: Thu, 30 Jul 2026 18:12:49 +0800 Subject: [PATCH 46/47] docs(faq): cast image count to string in upload-multiple-files-at-a-time FAQ SetHTTPFormField(name: string, value: string) documents value as a string; HowManyImagesInBuffer is a number. JS coerces this automatically so it worked in practice, but didn't match the documented signature. Fixes #1031 Co-Authored-By: Claude Sonnet 5 --- _articles/faq/upload-multiple-files-at-a-time.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_articles/faq/upload-multiple-files-at-a-time.md b/_articles/faq/upload-multiple-files-at-a-time.md index a2b760f8..9381f813 100644 --- a/_articles/faq/upload-multiple-files-at-a-time.md +++ b/_articles/faq/upload-multiple-files-at-a-time.md @@ -7,7 +7,7 @@ keywords: Dynamic Web TWAIN, Document Saving, upload files breadcrumbText: How to upload multiple files at a time? description: How to upload multiple files at a time? date: 2022-08-29 18:03:43 +0000 -last_modified: 2026-07-30 10:09:28 +0000 +last_modified: 2026-07-30 10:12:07 +0000 --- # Document Saving @@ -30,7 +30,7 @@ Convert each image to a JPG file (as a Blob) using [ConvertToBlob](/_articles/in function UploadAsJPG() { var count = 0; DWTObject.ClearAllHTTPFormField(); - DWTObject.SetHTTPFormField("UploadedImagesCount",DWTObject.HowManyImagesInBuffer); + DWTObject.SetHTTPFormField("UploadedImagesCount", DWTObject.HowManyImagesInBuffer.toString()); function asyncFailureFunc(errorCode, errorString) { alert("ErrorCode: " + errorCode + "\r" + "ErrorString:" + errorString); From 4bed869109ebf8a511ca58a40286a67d10f295a9 Mon Sep 17 00:00:00 2001 From: tony-xlh Date: Fri, 31 Jul 2026 11:30:35 +0800 Subject: [PATCH 47/47] note pdf/a-3b is supported from 19.4 --- _articles/info/api/interfaces.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_articles/info/api/interfaces.md b/_articles/info/api/interfaces.md index fb0ca80a..d14c3e0e 100644 --- a/_articles/info/api/interfaces.md +++ b/_articles/info/api/interfaces.md @@ -1866,7 +1866,7 @@ interface PDFWSettings { /** * From version 19.3 * Specify PDF/A version to save as PDF/A. - * Supported values: "pdf/a-1b", "pdf/a-2b", "pdf/a-3b" + * Supported values: "pdf/a-1b", "pdf/a-2b", "pdf/a-3b" (pdf/a-3b is supported from version 19.4) */ pdfaVersion?: string; }