栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在使用PDFBOX生成的PDF中,“保存的文本字段”值无法正确显示

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在使用PDFBOX生成的PDF中,“保存的文本字段”值无法正确显示

在上述问题中,我通过将页面资源添加到acroform中来修复了Issue#1,并为文本使用了正确的Default
Appearance字符串。现在,我不再需要将needsAppearance标志设置为true。

        PDFont font = PDType1Font.HELVETICA;        PDResources res = new PDResources();        String fontName = res.addFont(font);        String defaultAppearance = "/"+fontName+" 7 Tf 0 g";        COSDictionary acroFormDict = new COSDictionary();         acroFormDict.setBoolean(COSName.getPDFName("NeedAppearances"), false);        acroFormDict.setItem(COSName.getPDFName("Fields"), new COSArray());        acroFormDict.setItem(COSName.DA, new COSString(defaultAppearance));        PDAcroForm acroForm = new PDAcroForm(doc, acroFormDict);        acroForm.setDefaultResources(res);

检查以下完整的更正代码:

import java.io.IOException;import javax.swing.text.BadLocationException;import org.apache.pdfbox.cos.COSArray;import org.apache.pdfbox.cos.COSDictionary;import org.apache.pdfbox.cos.COSFloat;import org.apache.pdfbox.cos.COSName;import org.apache.pdfbox.cos.COSString;import org.apache.pdfbox.exceptions.COSVisitorException;import org.apache.pdfbox.pdmodel.PDdocument;import org.apache.pdfbox.pdmodel.PDPage;import org.apache.pdfbox.pdmodel.PDResources;import org.apache.pdfbox.pdmodel.font.PDFont;import org.apache.pdfbox.pdmodel.font.PDType1Font;import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;import org.apache.pdfbox.pdmodel.interactive.form.PDTextbox;import org.junit.Test;public class TestPDTextbox {    @Test    public void Sample1 () throws IOException, COSVisitorException, BadLocationException {        PDdocument doc = new PDdocument();        PDPage page = new PDPage();        doc.addPage(page);        PDFont font = PDType1Font.HELVETICA;        PDResources res = new PDResources();        String fontName = res.addFont(font);        String defaultAppearance = "/"+fontName+" 7 Tf 0 g";        COSDictionary acroFormDict = new COSDictionary();         acroFormDict.setBoolean(COSName.getPDFName("NeedAppearances"), false);        acroFormDict.setItem(COSName.getPDFName("Fields"), new COSArray());        acroFormDict.setItem(COSName.DA, new COSString(defaultAppearance));        PDAcroForm acroForm = new PDAcroForm(doc, acroFormDict);        acroForm.setDefaultResources(res);        doc.getdocumentCatalog().setAcroForm(acroForm);        COSDictionary cosDict1 = new COSDictionary();        COSArray rect1 = new COSArray();        rect1.add(new COSFloat(100));        rect1.add(new COSFloat(700));        rect1.add(new COSFloat(200));        rect1.add(new COSFloat(750));        cosDict1.setItem(COSName.RECT, rect1);        cosDict1.setItem(COSName.FT, COSName.getPDFName("Tx")); // Field Type        cosDict1.setItem(COSName.TYPE, COSName.ANNOT);        cosDict1.setItem(COSName.SUBTYPE, COSName.getPDFName("Widget"));        cosDict1.setItem(COSName.T, new COSString("tx1"));        cosDict1.setItem(COSName.DA, new COSString(defaultAppearance));//        cosDict1.setItem(COSName.V, new COSString("Test Value1"));        PDTextbox textbox = new PDTextbox(doc.getdocumentCatalog().getAcroForm(), cosDict1);      textbox.setValue("Test Value");        page.getAnnotations().add(textbox.getWidget());        acroForm.getFields().add(textbox);         doc.save("C:\PDF\SampleTextbox.pdf");         doc.close();    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/470326.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号