当前位置: 首页 > 知识库问答 >
问题:

Jasper报告粗体样式不适用于PDF Exporter

卢出野
2023-03-14
implementation "com.lowagie:itext:2.1.7.js8"
implementation "net.sf.jasperreports:jasperreports:6.17.0"
implementation "net.sf.jasperreports:jasperreports-fonts:6.17.0"
FROM openjdk:11.0.11-jre-buster

COPY customer-microservice*.jar /usr/app/service.jar
ENTRYPOINT ["java", "-jar", "-D=java.awt.headless=true", "/usr/app/service.jar"]
private JasperReport report(String jasperFilePath) throws Exception {
    var inputStream = resourceResolver
                       .getResourceAsStream(jasperFilePath)
                       .orElseThrow(() -> new FileNotFoundException(jasperFilePath));
    return (JasperReport) JRLoader.loadObject(inputStream);
}

public void exportPdf(String reportName, String customerData) throws Exception {
    var jsonDataStream = new ByteArrayInputStream(customerData.getBytes());
    JsonDataSource ds = new JsonDataSource(jsonDataStream);
    JRFileVirtualizer fileVisualizer = new JRFileVirtualizer(100, "test");

    Map<String, Object> m = new HashMap<>();
    m.put(JRParameter.REPORT_VIRTUALIZER, fileVisualizer);

    String jasperFilePath = "classpath:jasper/customer-report.jasper";
    JasperPrint p = JasperFillManager.fillReport(report(jasperFilePath), m, ds);

    // I use a docker volume to open the file in my computer
    String destFinal = "/tmp/" + reportName;
    JasperExportManager.exportReportToPdfFile(p, destFinal);
}
# fc-match -s Helvetica
DejaVuSans.ttf: "DejaVu Sans" "Book"
DejaVuSans-Bold.ttf: "DejaVu Sans" "Bold"
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"
DejaVuSerif.ttf: "DejaVu Serif" "Book"
DejaVuSansMono-Bold.ttf: "DejaVu Sans Mono" "Bold"
DejaVuSerif-Bold.ttf: "DejaVu Serif" "Bold"

共有1个答案

邢思淼
2023-03-14

问题是因为我使用shadow gradle插件生成shadow jar,jasperreports和jasperreports-fonts库在相同的路径中有JasperReports_extension.properties文件。

我在shadowJar任务中添加了以下配置:

dependencies {
   implementation "com.lowagie:itext:2.1.7.js8"
   implementation "net.sf.jasperreports:jasperreports:6.17.0"
   implementation "net.sf.jasperreports:jasperreports-fonts:6.17.0"
}

shadowJar {
    // Add content from jasperreports and jasperreports-fonts libraries
    append 'jasperreports_extension.properties'
}

这个问题对于找到解决方案很有用:net.sf.jasperreports.engine.jrruntimeException UncaughtExceptionHandler中的Exception

 类似资料:
  • 我在用一个工具自动生成CSS,它生成下面的@font-face标签和对应的段落Style 注意,指定的字体已经是Garamond字体的斜体版本,从技术上来说,< code>font-style:italic行是多余的。 然而,这并不奏效(我在FF、Chrome 所以,我有2个问题 > 为什么这不起作用,也就是说,为什么使用会导致它不起作用? 有没有办法通过javascript“覆盖”@font f

  • 我正在从. jasper文件加载jasper报告文件以提高性能,如下所示。 但是我现在有一个要求,动态形成的查询必须设置为. jasper(编译)文件。有没有办法做同样的事情?

  • 我在我的一个报告中使用多种字体,我导出为PDF,我正在使用IREPORT来设计我的报告。 和根包中字体文件夹中的字体文件。

  • 我对Jasper Sub报告有问题。我有一个报告模板,它有一个子报告;在主报表中,我有一些参数应该在子报表中也可用。

  • 在通过WebView显示的超文本标记语言文件中使用Google字体,如果字体样式设置为斜体字,字体不会呈现斜体。 字体权重也是如此。将其设置为粗体,文本呈现正常。 这似乎只适用于这些自定义字体,“系统”字体(如Arial)在设置时呈现粗体和斜体。 我已经使用ADB从设备中提取文件并在本地运行,在Chrome中,它们显示正确,粗体和斜体。

  • 我有一个非常奇怪的问题与我的字体呈现在泰米尔当我生成一个PDF使用Jasper报告。它会翻转两个字母。我试图呈现的测试是 对此,作者提出了建议 但当PDF呈现时,它会翻转