2022年最新版Dynamic Web TWAIN的白纸分隔PDF功能(一次扫描输出多份PDF)

为了快速提高用户的扫描效率并做好PDF分类,用户在扫描大量PDF前可用白纸将需要分类的PDF给隔开,在用下面的代码扫描时,即可自动输出多份PDF。
旧版链接:How to use a blank page as a separator
这是2016年之前的版本,当前版本已经改掉了一些API,不再适用,现对其进行稍微修改即可。下面是完整的代码
新版代码:

<!DOCTYPE html>
<html>
    <head>
    <title>Hello World</title>
    <script type="text/javascript" src="Resources/dynamsoft.webtwain.initiate.js"></script>
    <script type="text/javascript" src="Resources/dynamsoft.webtwain.config.js"></script>
</head>
<body>
    <div id="dwtcontrolContainer" ></div>
    <input type="button" value="Acquire" onclick="AcquireImage();" />
    <script type="text/javascript">
      function Dynamsoft_OnReady() {
        DWObject = Dynamsoft.DWT.GetWebTwain('dwtcontrolContainer');
      }
    function AcquireImage() {
      if (DWObject) {
        DWObject.RegisterEvent('OnPostAllTransfers', CheckBlankPage); // Register OnPostAllTransfers event. This event fires when all pages have been scanned and transferred    
        if (DWObject.UseLocalService) {
          DWObject.SelectSource(function () {		
            var OnAcquireImageSuccess = OnAcquireImageFailure = function () {
              DWObject.CloseSource();
            };
            DWObject.OpenSource();
            DWObject.IfDisableSourceAfterAcquire = true;
            DWObject.AcquireImage(OnAcquireImageSuccess, OnAcquireImageFailure);
          }, function () {
            console.log('SelectSource failed!');
          });
        }
      }
    }
    function CheckBlankPage() { //Function for checking a blank page, called when OnPostAllTransfers is triggered
      if (DWObject) {//Ensure there is a DWObject
          var startindex = 0;
          console.log('DWObject.HowManyImagesInBuffer', DWObject.HowManyImagesInBuffer)
          for (var i = 0; i < DWObject.HowManyImagesInBuffer; i++) {//Go through each image in the buffer.
              if (DWObject.IsBlankImageExpress(i)) {
                  DWObject.RemoveImage(i);// remove the blank page from the buffer.
                  if (i != 0) {
                      i--; //decrement i for the removed image
                      DWObject.SelectedImagesCount = (i - startindex + 1); // set how many images are selected
                      let arr = []
                      for (var j = 0; j < DWObject.SelectedImagesCount; j++) { //loop to select all images from previous blank to current
                        // console.log(1, j, j + startindex)
                          // DWObject.SelectImages([j, j + startindex]);
                          arr.push(j + startindex)
                      }
                      console.log('arr1', arr)
                      DWObject.SelectImages(arr);
                      if (DWObject.SelectedImagesCount > 0) { //save images as long as there are some in the selection
                        console.log('非最后一份')
                          DWObject.IfShowFileDialog = false;
                          var randomId = (Math.floor(Math.random() * 1000 + 1)).toString();        
                          DWObject.SaveSelectedImagesAsMultiPagePDF('C:\\ProgramData\\epson\\'+randomId + ".pdf", (suc) => {
                            console.log('suc', suc)
                          },
                          (errorCode, errorString) => {
                            console.log('errorCode', errorCode, errorString)
                          });//PLEASE CHANGE THIS FILE PATH
                      }
                      startindex = i + 1; //set the start index for next search 1 higher than current page
                  }
              }
              else if (i == DWObject.HowManyImagesInBuffer - 1) {//the last few images are not blank
                console.log('最后一份')
                  DWObject.SelectedImagesCount = (i - startindex + 1); // set how many images are selected
                  let arr = []
                  for (var j = 0; j < DWObject.SelectedImagesCount; j++) { //loop to select all images from previous blank to current
                    // console.log(2, j, j + startindex)
                      // DWObject.SelectImages([j, j + startindex]);
                      arr.push(j + startindex)
                  }
                  console.log('arr2', arr)
                  DWObject.SelectImages(arr);
                  if (DWObject.SelectedImagesCount > 0) { //save images as long as there are some in the selection
                      DWObject.IfShowFileDialog = false;
                      DWObject.SaveSelectedImagesAsMultiPagePDF("C:\\ProgramData\\epson\\李四.pdf", (suc) => {
                            console.log('suc2', suc)
                          },
                          (errorCode, errorString) => {
                            console.log('errorCode2', errorCode, errorString)
                          });//PLEASE CHANGE THIS FILE PATH
                  }
              }
          }
      }
  }
    </script>
</body>
</html>

上面的代码是扫描自动保存的,如果需要用户手动输入名字保存每一份PDF,则需要把DWObject.IfShowFileDialog设置为true,SaveSelectedImagesAsMultiPagePDF函数的第一个参数改为默认名称即可,不需要绝对路径了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值