PDFTron WebViewer:将 Comb 标志设置为多次出现的文本字段

问题描述 投票:0回答:2

我正在加载 PDF 文档,我需要确保名称具有特定模式的每个字段都转换为 COMB 字段。碰巧某个字段可以重复,这意味着可以找到具有相同字段的另一个字段。

对于每个领域...

const fieldChanged = await PDFNet.runWithCleanup(() => combFieldAdjustmentCallBack(pdfField, configuredMaxLen), this.configurationService.webViewerPDFTronKey);

combFieldAdjustmentCallBack 实现

      const combFieldAdjustmentCallBack = async (pdfField: Core.Annotations.Forms.Field, 
         configuredMaxLen: number) => {
            let fieldChanged: boolean;
            const itr = await pdfDoc.getFieldIterator(pdfField.name);
            for (; await itr.hasNext(); await itr.next()) {

                const docField = await itr.current();

                // if the field has not set the flag comb; set it and mark the field as changed
                const comb = await docField.getFlag(PDFNet.Field.Flag.e_comb);
                if (!comb) {
                    await docField.setFlag(PDFNet.Field.Flag.e_multiline, false);
                    await docField.setFlag(PDFNet.Field.Flag.e_password, false);
                    await docField.setFlag(PDFNet.Field.Flag.e_no_spellcheck, true);
                    await docField.setFlag(PDFNet.Field.Flag.e_no_scroll, true);
                    await docField.setFlag(PDFNet.Field.Flag.e_rich_text, false);

                    await docField.setFlag(PDFNet.Field.Flag.e_comb, true);

                    const comb = await docField.getFlag(PDFNet.Field.Flag.e_comb);

                    //  Always "Field XYZ is a comb field: false"
                    console.log(`Field ${pdfField.name} is a comb field: ${comb}`);

                    fieldChanged = true;
                }

                // Set max length
                const currentMaxLength = await docField.getMaxLen();
                if (configuredMaxLen != currentMaxLength) {
                    await docField.setMaxLen(configuredMaxLen);
                    fieldChanged = true;
                }

                if (fieldChanged) {
                    docField.refreshAppearance();
                }

                return fieldChanged ?? false;
            }
        };

当字段仅出现一次时,此逻辑有效,但当字段在 PDF 中重复出现时,此逻辑不起作用。请注意 始终“字段 XYZ 是梳状字段: false

我缺少什么

typescript pdftron
2个回答
0
投票

看起来您正在尝试重新定义 const 变量,因此如果将其设置为 false,它将始终为 false。

最诚挚的问候 泰勒


0
投票

代码是正确的。 该决议是一个经典的开箱即用的决议。

经过一些测试,我们观察到以下行为:

  1. PDF 中的一一字段未能设置 COMB 标志。
  2. 在发现此问题之前,PDF 中的其他匹配字段已成功转换为 COMB。
  3. 其他 PDF 文件中的匹配字段已成功转换为 COMB。

结论

因此,根据我们的测试,我们得出结论,该特定文件中的特定字段存在问题。创建该文件的另一个版本解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.