使用pdf表单上的复选框时出现pdftk错误

时间:2014-02-12 21:06:14

标签: pdftk pdf-form

当我在pdf表单上使用复选框时,pdftk会出现以下错误,并且不会创建输出pdf。

未处理的Java异常:
未处理的Java异常:
显示java.lang.NullPointerException
   在gnu.gcj.runtime.NameFinder.lookup(libgcj.so.12)
   在java.lang.Throwable.getStackTrace(libgcj.so.12)
   在java.lang.Throwable.stackTraceString(libgcj.so.12)
   在java.lang.Throwable.printStackTrace(libgcj.so.12)
   在java.lang.Throwable.printStackTrace(libgcj.so.12)

1 个答案:

答案 0 :(得分:0)

今天,我在Checkbox中遇到了类似的问题。而且我还看到了java.lang.NullPointerException错误。经过调查,我发现这是因为我的可填充复选框使用自定义glyphicon('X')作为复选标记,而不是默认样式。

因此,在阅读了此答案https://stackoverflow.com/a/29034948/11898471之后,它摆脱了我的自定义复选框glyphicon,从而可以锻炼身体。在没有看到您的代码的情况下,我不知道您该怎么做,但是我的情况是使用自定义复选框将客户上传的PDF表单弄平。我要做的是提取所有表单数据,然后重新填写表单,以使它们摆脱所有自定义复选框的标记。像这样:

            $pdf = new Pdf($uploadedFile->getRealPath(), ['command' => env('PDFTK_PATH')]);

            /* Extract form field to remove custom markup field that cannot be filled. Eg: custom checkbox icon  */
            $pdf2 = new Pdf($uploadedFile->getRealPath(), ['command' => env('PDFTK_PATH')]);
            $data = $pdf2->getDataFields();
            $data = (array) $data;
            $fill_data = [];
            foreach ($data as $field) {
                if (isset($field['FieldValue'])) {
                    $fill_data[$field['FieldName']] = $field['FieldValue'];
                }
            }
            /* Update form field */
            $pdf->fillForm($fill_data)
                ->flatten()
                ->saveAs(storage_path('app/'.$flattenedFilename));