Java 条形码不';t使用iText以PDF格式显示
我正在使用iText动态生成PDF文档。现在我尝试在这个PDF中动态创建一个条形码。Adobe Live Cycle内置了条形码功能。您只需拖动页面上的条形码文本框即可创建 问题: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
我将条形码字段放在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中创建模板的方式有关(静态或动态) 请看这里的示例 问候 拉加文德拉·萨曼特