- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我使用 Jasper 模板和来自 Barcode4J 的条码元素“Code128”打印带有以下编号“1000049722ABCD2F”的标签作为条码。 打印为 PDF,条形码完美且可扫描。打印与 PNG 文件相同的条码,条码不可扫描,与 PDF 条码明显不同:
相同的条形码:PDF(图像的上半部分)和 PNG(图像的下半部分):
以下代码用于生成PDF 条形码:
byte[] data = JasperExportManager.exportReportToPdf(jasperPrint);
要生成PNG,没那么简单:
ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();
ImageOutputStream imageOutputStream = ImageIO.createImageOutputStream(byteOutputStream);
ImageWriter imageWriter = ImageIO.getImageWritersBySuffix("png").next();
imageWriter.setOutput(imageOutputStream);
float zoom = getZoomFactor(jasperPrint);
BufferedImage image = new BufferedImage(
(int)(jasperPrint.getPageWidth() * zoom ) + 1,
(int)(jasperPrint.getPageHeight() * zoom) + 1,
BufferedImage.TYPE_INT_RGB);
JRGraphics2DExporterNoAntialias exporter = new JRGraphics2DExporterNoAntialias();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRGraphics2DExporterParameter.GRAPHICS_2D, image.getGraphics());
exporter.setParameter(JRExporterParameter.PAGE_INDEX, Integer.valueOf(page));
exporter.setParameter(JRGraphics2DExporterParameter.ZOOM_RATIO, new Float(zoom));
exporter.exportReport();
IIOMetadata imageMetaData = imageWriter.getDefaultImageMetadata(new ImageTypeSpecifier(image), null);
// DPI = 200, inch = 25.4
double dotsPerMilli = 200 / 25.4;
IIOMetadataNode horiz = new IIOMetadataNode("HorizontalPixelSize");
horiz.setAttribute("value", Double.toString(dotsPerMilli));
IIOMetadataNode vert = new IIOMetadataNode("VerticalPixelSize");
vert.setAttribute("value", Double.toString(dotsPerMilli));
IIOMetadataNode dim = new IIOMetadataNode("Dimension");
dim.appendChild(horiz);
dim.appendChild(vert);
IIOMetadataNode root = new IIOMetadataNode("javax_imageio_1.0");
root.appendChild(dim);
imageMetaData.mergeTree("javax_imageio_1.0", root);
imageWriter.write(null, new IIOImage(image, null, imageMetaData), null);
imageOutputStream.close();
imageWriter.dispose();
byte[] data = byteOutputStream.toByteArray();
我正在使用:barcode4j-2.1/jasperreports-5.0.0/200 DPI 是我的标签打印机所需的尺寸
我尝试更改很多设置(BufferedImage.TYPE 值、条码宽度、Barbecue 条码 128B 等),但 PDF 和 PNG 条码之间始终存在差异。
目标:PNG 条码应与 PDF 条码完全相同。
谁能帮我解决这个问题?我将不胜感激!
最佳答案
而不是使用 ImageWriter,为什么不尝试使用来自 org.krysalis.barcode4j.tools.MimeTypes(来自 barcode4j-2.1.jar 本身)的 MimeTypes.MIME_PNG。
我不会重复我的回答,但你可以引用我的代码。这是我的另一个 stackoverflow 的链接:
而且我在使用该程序时从未遇到过这个问题(无法扫描条形码)。
关于java - JasperReports 条码 Code128 (Barcode4J) : PNG differs from PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41264468/
我的 pom 中有以下插件: org.codehaus.mojo jasperreports-maven-plugin
我试图让 JasperReports 嵌入 JasperReports 字体 jar 中存在的字体(来自 DynamicJasper 生成的报告)。我在 jasperreports.propertie
我们在刚下载的 TomEE 应用服务器中出现了奇怪的行为。我们的情况:我们正在运行两个应用程序(我们称之为 v1 和 v2),它们通过使用 JasperReports 的 REST API 为我们提供
当jasperreport在java应用程序中导出为.pdf时,我们如何设置jasperreport的字体。 最佳答案 我需要将西里尔字体导出到 jasperreport 中以生成 pdf。字体必须包
我正在使用 Java 生成 jasper 报告。它有一个学生 bean,其中包含 College_name 和学生信息列表(第二个 bean)。Student_info包含student_Name和地
我正在升级标题中提到的 JasperReports 版本。JasperReports 版本升级我不是很了解。我必须更改所有内容才能使其正常工作。我有所有内容的最新 .jar 文件。但是当我打印我的 .
我想通过 Java 打印 JasperReports 的报告。 所以我写了如下代码 try { String r ="C:\\ireport\\Foods.jrxml";
尝试在 WebLogic 11g 上导出时,它会引发 NoClassDefFound 异常。我检查了应用程序 WAR 并且 jasperreports-3.7.4.jar 包含在 WEB-INF/li
我正在使用 GWT 构建一个网站,我想使用 JasperReports 在网站中加入一个报告生成器。报告绘制的所有数据都存储在云中的数据库中,因此我使用实例和云 sql 连接到数据库并检索/存储数据(
我想分享我对 JasperReports 或多或少常见错误的经验。 在执行JasperReports制作PDF报表时出现异常: java.lang.NoClassDefFoundError: Coul
我正在使用 grails 版本 2.4.0 和 JasperReports 插件:1.9.0(也尝试过版本 jasper-1.10.0-SNAPSHOT),但是当我导出到 pdf 时出现错误。 当我第
我正在尝试使用 java 代码从 jrxml 文件制作 pdf,但它给了我以下错误: SEVERE: Parse Error at line 2 column 487: Document root e
我在 docker openjdk:11.0.1-jdk-slim 内运行 jasperreports 没有错误。 内部openjdk:11.0-jdk-slim(openjdk版本“11.0.6”2
我非常接近这项工作,我试图直接将一个 jasper 子报告嵌入到另一个的主报告 xml 中。你会认为这很容易,但我找不到一个关于这样做的例子。每个人似乎都在使用文件或资源或其他任何东西。我有一个直接从
出于某种原因,我的带有日期和页面 x/y 的页脚只打印在最后一页。有谁知道为什么? 我正在使用 JasperReports 3.1.2和 iReport 3.0.0 . 编辑 :只是为了记录:在我从
这应该是一个关于 JasperReports 的简单问题。我正在尝试对整个报告做一个简单的计数器,该计数器应根据条件递增。但是,无论我尝试什么,似乎计数器变量总是在递增,无论变量表达式如何。我的变量的
有没有办法对 JasperReport 的大小设置限制?我们刚刚查看了一个 WebSphere 6.1 Heapdump,有人试图创建一个报告,结果堆中有 1.5GB 的内存。它使我们的 Websph
我希望在我的项目中使用 JasperReports 4.5.0,并且想知道仅生成 PDF 的最小依赖项是什么。我尝试浏览他们的网站和自述文档,但一无所获。我也遇到过这个installation wik
我只想将数据集中的唯一值打印到列表组件中,避免重复值。 怎么做? 附言我正在使用XML作为数据源。 最佳答案 使用X-Path在数据源中选择节点时,请尝试以下类似的操作。 /root/*[not(te
我想要让 JasperReports 子报表中的行交替显示颜色。我的所有行都具有相同的背景颜色,但我希望它交替。这可以吗? 最佳答案 是的,可以set up a style在 JRXML 文件中,如下
我是一名优秀的程序员,十分优秀!