Java 条形码不';t使用iText以PDF格式显示

Java 条形码不';t使用iText以PDF格式显示,java,pdf,itext,barcode,Java,Pdf,Itext,Barcode,我正在使用iText动态生成PDF文档。现在我尝试在这个PDF中动态创建一个条形码。Adobe Live Cycle内置了条形码功能。您只需拖动页面上的条形码文本框即可创建 问题: 我将条形码字段放在PDF中。然后从JSP页面向条形码字段传递一个数字。但只有数字出现。条形码行从不显示 数字20099002在PDF文档上可见,但条形码行无法显示。我在LiveCycle中尝试了其他几种条形码选项,但都给出了相同的结果 OurJavaPage.java public class Ex

我正在使用iText动态生成PDF文档。现在我尝试在这个PDF中动态创建一个条形码。Adobe Live Cycle内置了条形码功能。您只需拖动页面上的条形码文本框即可创建

问题:
我将条形码字段放在PDF中。然后从JSP页面向条形码字段传递一个数字。但只有数字出现。条形码行从不显示

数字20099002在PDF文档上可见,但条形码行无法显示。我在LiveCycle中尝试了其他几种条形码选项,但都给出了相同的结果

    OurJavaPage.java 
    public class ExampleForm extends BaseOutput { 
    private static final Log LOG = LogFactory.getLog(ExampleForm.class); 
    public OutputStream generate() throws IOException, DocumentException { 
        ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
        PdfReader reader; 
        reader = new PdfReader(BASEDIR + "MailingExample.pdf"); 

        PdfStamper stamper = new PdfStamper(reader, baos); 
        Participant participantHome = home.getParticipant(); 
        Set<Location> homeLocs = participantHome.getLocations(); 

        final AcroFields form = stamper.getAcroFields(); 

        setFormField(form, "addrNumber[0]", addrMaster.getStreetNum()); 
        setFormField(form, "dateMiddle[0]", formatDate("MM-dd-yyyy", new Date())); 

// *********** Here's the problem *****************************
        setFormField(form, "Code128ABarcode1[0]", "20099002");
// ************************************************************

        debugAcrobatForm("ExampleForm", form); 
        stamper.setFormFlattening(true); 
        stamper.close(); 

        return baos; 
    } 
}
OurJavaPage.java
公共类ExampleForm扩展了BaseOutput{
私有静态最终日志日志=LogFactory.getLog(ExampleForm.class);
public OutputStream generate()引发IOException,DocumentException{
ByteArrayOutputStream bas=新的ByteArrayOutputStream();
PDF阅读器;
reader=新的pdf阅读器(BASEDIR+“MailingExample.pdf”);
PdfStamper压模=新PdfStamper(读卡器,BAS);
参与者participantHome=home.getParticipant();
设置homeLocs=participantHome.getLocations();
最终AcroFields表单=stamp.getAcroFields();
setFormField(形式为“addrNumber[0]”,addrMaster.getStreetNum();
setFormField(格式为“dateMiddle[0]”,格式为“MM dd yyyy”,新日期());
//***************问题出在这里*****************************
setFormField(表格“Code128ABarcode1[0]”,“20099002”);
// ************************************************************
表格(“示例表格”,表格);
母版。SetFormFlatting(真);
压模关闭();
返回宝;
} 
}
操作系统:Linux
编程:Java、.jsp、iText

软件:Adobe Live Cycle Designer ES 8.1

您的软件是将条形码嵌入为图形还是作为字符的字体表示


如果是后者,是将字体嵌入PDF吗?

您在非常活跃的IText邮件列表上询问过吗?

问题已解决

我联系了iText,他们建议我更改这一行

发件人: 母版。SetFormFlatting(真)
至: 母版设置模板展平(假)


如果这是一个使用LiveCycle创建的动态XFA表单,那么使用表单展开将导致表单字段丢失。不过,静态XFA表单应该可以工作

参考:


iText中的XFA支持正在改进,但充其量只是零散的。

您必须在您的系统(字体库)中添加条形码字体,然后它将显示在您的字体下拉列表中。使用acro字段(文本)并在此acro字段中设置该字体。你的问题会解决的。
另外,使用setFormFlatting=true,因为它会使pdf不可编辑

它对我来说很好。。也许这与您在livecycle designer中创建模板的方式有关(静态或动态)

请看这里的示例

问候 拉加文德拉·萨曼特