首页 > 解决方案 > pdfform.js 库不仅仅在选择框和复选框中编码

问题描述

在此处输入图像描述

使用名为 pdform.js 的 js 库,读取的 pdf 表单如下:

其他文本形式和单个复选框正常编码。

只有复选框、单选按钮和选择框不能编码。无论我怎么看,我都无法回答。

代码太长,无法附上,但我觉得这里下面的代码有问题。

function list(buf) {
    
    var list_form = document.querySelector('.list_form');
    empty(list_form);

    var cnt = 1;
    var field_specs;
    try {
        field_specs = make_pdfform().list_fields(buf);
    } catch (e) {
        on_error(e);
        return;
    }
    for (var field_key in field_specs) {
        var row = document.createElement('div');
        row.appendChild(document.createTextNode(field_key));
        list_form.appendChild(row);
        field_specs[field_key].forEach(function(spec, i) {
            for(var key in spec) console.log(key + " = " + spec[key]);
            if ((spec.type === 'radio') && spec.options) {
                var fieldset_el = document.createElement('fieldset');
                spec.options.forEach(function(ostr) {
                    var label = document.createElement('label');
                    var radio = document.createElement('input');
                    radio.setAttribute('type', 'radio');
                    radio.setAttribute('value', ostr);
                    radio.setAttribute('name', field_key + '_' + i);
                    radio.setAttribute('data-idx', i);
                    radio.setAttribute('data-key', field_key);
                    label.appendChild(radio);
                    label.appendChild(document.createTextNode(ostr));
                    fieldset_el.appendChild(label);
                });
                row.appendChild(fieldset_el);
                return;
            }

            var input = document.createElement((spec.type === 'select') ? 'select' : 'input');
            input.setAttribute('data-idx', i);
            input.setAttribute('data-key', field_key);
            if (spec.type === 'boolean') {
                input.setAttribute('type', 'checkbox');
            } else if (spec.type === 'string') {
                
            } else if ((spec.type === 'select') && spec.options) {
                spec.options.forEach(function(ostr) {
                    var option_el = document.createElement('option');
                    
                    //problem part
                    option_el.appendChild(document.createTextNode(ostr));
                    option_el.setAttribute('value', ostr);
                    input.appendChild(option_el);
                     
                });
            }
                    
            row.appendChild(input);

        });
    }
}

标签: javascriptjavapdf

解决方案


推荐阅读