如何解决PDF中的条形码未在FireFox中显示
我们面临一个奇怪的问题。我通过iText 7
生成了PDF。该PDF可以在我和测试人员的系统上完美打开。 (我们俩都在印度)。即使在我们的个人计算机上也可以。我们在以下所有地方进行了测试:
- Adobe Reader
- FireFox
- Chrome
我们的其他团队成员(在布鲁塞尔)可以在Chrome和Adobe Reader中打开PDF,但是在FireFox中,PDF打开但不显示条形码。甚至这个问题都在那里 笔记本电脑。
- 两个版本的FireFox都相同:
80.0.1 64-bit
。
只有地理位置不同,其余设置/版本都相同。 为什么会这样?
编辑: 用于生成条形码的代码:
public static String getBarCodeImage(String barCode,boolean drawingText) throws OutputException,BarcodeException,IOException {
Barcode barcode = null;
if(isNumeric(barCode)){
barcode = BarcodeFactory.createCode128C(barCode);
}else {
barcode = BarcodeFactory.createCode128(barCode);
}
barcode.setBarHeight(34);
barcode.setBarWidth(157);
barcode.setDrawingText(false);
BufferedImage image = BarcodeImageHandler.getImage(barcode);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image,"png",baos);
byte[] bytes = baos.toByteArray();
return Base64.getEncoder().encodeToString(bytes);
}
Pdf生成代码:
public static byte[] createPdf(List<String> htmlPages,PageSize pageSize,boolean rotate) throws IOException {
ConverterProperties properties = new ConverterProperties();
org.apache.catalina.webresources.TomcatURLStreamHandlerFactory.register();
properties.setBaseUri("classpath:/");
FontProvider fontProvider = new DefaultFontProvider(true,false,false);
properties.setFontProvider(fontProvider);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
WriterProperties writerProperties = new WriterProperties();
writerProperties.useSmartMode();
PdfDocument pdf = new PdfDocument(new PdfWriter(byteArrayOutputStream,writerProperties));
PdfMerger merger = new PdfMerger(pdf);
for (String htmlPage : htmlPages) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfDocument temp = new PdfDocument(new PdfWriter(baos,writerProperties));
if (rotate) {
temp.setDefaultPageSize(pageSize.rotate());
} else {
temp.setDefaultPageSize(pageSize);
}
HtmlConverter.convertToPdf(htmlPage,temp,properties);
temp = new PdfDocument(new PdfReader(new ByteArrayInputStream(baos.toByteArray())));
merger.merge(temp,1,temp.getNumberOfPages());
temp.close();
}
pdf.close();
byteArrayOutputStream.close();
return byteArrayOutputStream.toByteArray();
}
您可以找到它的HTML文件here
我观察到,如果条形码文本的长度为8,则它在两个地区都适用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。