Otto Hahn Posted June 16, 2017 Share Posted June 16, 2017 I'm using JasperReports Studio 6.3.1 and for coding jasperreports-6.3.1.jar, jasperreports-font.6.3.1.jar, itext-2.1.7.js5.jarI tried to export a very simple report to PDF/A, witch is only using DejaVu Sans Font from the library.The Preview looks like this:I get this Exeption:com.lowagie.text.pdf.PdfXConformanceException: All the fonts must be embedded. This one isn't: Helvetica at com.lowagie.text.pdf.internal.PdfXConformanceImp.checkPDFXConformance(Unknown Source) at com.lowagie.text.pdf.PdfWriter.addSimple(Unknown Source) at com.lowagie.text.pdf.PdfContentByte.setFontAndSize(Unknown Source) at com.lowagie.text.pdf.PdfDocument.writeLineToContent(Unknown Source) at com.lowagie.text.pdf.ColumnText.go(Unknown Source) at com.lowagie.text.pdf.ColumnText.go(Unknown Source) at net.sf.jasperreports.engine.export.JRPdfExporter.writePageAnchor(JRPdfExporter.java:1000) at net.sf.jasperreports.engine.export.JRPdfExporter.exportReportToStream(JRPdfExporter.java:912) at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:537) at openkv.jasperreports.demo.FontExtensionDemo.exportToPdfA(FontExtensionDemo.java:48) at openkv.jasperreports.demo.FontExtensionDemo.runDemo(FontExtensionDemo.java:40) at openkv.jasperreports.demo.FontExtensionDemo.main(FontExtensionDemo.java:32)</pre>[/code]The Java Source:package openkv.jasperreports.demo;import java.io.File;import java.net.URL;import org.apache.log4j.BasicConfigurator;import org.apache.log4j.Level;import org.apache.log4j.Logger;import net.sf.jasperreports.engine.JRDataSource;import net.sf.jasperreports.engine.JREmptyDataSource;import net.sf.jasperreports.engine.JRException;import net.sf.jasperreports.engine.JasperFillManager;import net.sf.jasperreports.engine.JasperPrint;import net.sf.jasperreports.engine.export.JRPdfExporter;import net.sf.jasperreports.export.SimpleExporterInput;import net.sf.jasperreports.export.SimpleOutputStreamExporterOutput;import net.sf.jasperreports.export.SimplePdfExporterConfiguration;import net.sf.jasperreports.export.type.PdfaConformanceEnum;public class FontExtensionDemo { private final static String ICC_FILE = "/openkv/framework/jasperreports/engine/export/sRGB_v4_ICC_preference.icc"; private final static String reportName = "SimpleFontExtension"; public static void main(String[] args) { BasicConfigurator.configure(); Logger.getRootLogger().setLevel(Level.DEBUG); FontExtensionDemo demo = new FontExtensionDemo(); try { demo.runDemo(); } catch (Throwable e) { e.printStackTrace(); } } public void runDemo() throws Throwable { JasperPrint jasperPrint = fillReport(); exportToPdfA(jasperPrint); } private void exportToPdfA(JasperPrint jasperPrint) throws JRException { JRPdfExporter exporter = new JRPdfExporter(); exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); exporter.setExporterOutput(new SimpleOutputStreamExporterOutput("H:" + reportName + ".pdf")); exporter.setConfiguration(this.getPdfAExporterConfiguration()); exporter.exportReport(); } private SimplePdfExporterConfiguration getPdfAExporterConfiguration() { SimplePdfExporterConfiguration exporterConfiguration = new SimplePdfExporterConfiguration(); exporterConfiguration.isTagged(); exporterConfiguration.setPdfaConformance(PdfaConformanceEnum.PDFA_1A); exporterConfiguration.setIccProfilePath(getClass().getResource(ICC_FILE).getPath()); return exporterConfiguration; } private JasperPrint fillReport() throws JRException { JRDataSource dataSource = new JREmptyDataSource(1); return JasperFillManager.fillReport(getSourceFileName(), null, dataSource); } private String getSourceFileName() { String reportBasePath = "/openkv/jasperreports/demo/report"; URL reportResource = FontExtensionDemo.class.getResource(reportBasePath + "/FontExtension/" + reportName + ".jasper"); return new File(reportResource.getPath()).getAbsolutePath(); }}[/code] The Report Source:<?xml version="1.0" encoding="UTF-8"?><!-- Created with Jaspersoft Studio version 6.3.1.final using JasperReports Library version 6.3.1 --><!-- 2017-06-16T11:09:44 --><jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="SimpleFontExtension" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="33b3b27b-bc99-4208-a8fc-1f05d77efd89"> <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/> <queryString> <![CDATA[]]> </queryString> <background> <band splitType="Stretch"/> </background> <detail> <band height="103" splitType="Stretch"> <staticText> <reportElement x="0" y="0" width="550" height="41" uuid="57a35ef2-2c45-4e6a-a302-9c3b083e2bcb"/> <textElement textAlignment="Center" verticalAlignment="Middle"> <font fontName="DejaVu Sans" size="34" isBold="true" isItalic="false" isUnderline="true"/> </textElement> <text><![CDATA[DejaVu Sans Font Demo]]></text> </staticText> <staticText> <reportElement key="" x="68" y="46" width="52" height="19" uuid="cd391c43-485c-4415-a71d-81930765738d"/> <textElement textAlignment="Left" verticalAlignment="Middle"> <font fontName="DejaVu Sans" size="12" isBold="true" isUnderline="false"/> </textElement> <text><![CDATA[bold]]></text> </staticText> <staticText> <reportElement key="" x="68" y="65" width="52" height="19" uuid="18fa45fa-2346-4d7d-8447-f76261754fef"/> <textElement textAlignment="Left" verticalAlignment="Middle"> <font fontName="DejaVu Sans" size="12" isBold="false" isItalic="true" isUnderline="false"/> </textElement> <text><![CDATA[italic]]></text> </staticText> <staticText> <reportElement key="" x="68" y="84" width="52" height="19" uuid="76f3ac47-7018-4227-8de7-34a9a9f3a603"/> <textElement textAlignment="Left" verticalAlignment="Middle"> <font fontName="DejaVu Sans" size="12" isBold="false" isItalic="false" isUnderline="false"/> </textElement> <text><![CDATA[Normal]]></text> </staticText> <staticText> <reportElement key="" x="130" y="46" width="110" height="19" uuid="65aae4f2-58c1-446a-941f-657fd7887916"/> <textElement textAlignment="Left" verticalAlignment="Middle"> <font fontName="DejaVu Sans" size="12" isBold="true" isUnderline="true"/> </textElement> <text><![CDATA[bold Underline]]></text> </staticText> <staticText> <reportElement key="" x="130" y="65" width="110" height="19" uuid="d2c5cbbd-d088-40b8-a1bc-fa68156dbf07"/> <textElement textAlignment="Left" verticalAlignment="Middle"> <font fontName="DejaVu Sans" size="12" isBold="false" isItalic="true" isUnderline="true"/> </textElement> <text><![CDATA[italic Underline]]></text> </staticText> <staticText> <reportElement key="" x="130" y="84" width="110" height="19" uuid="0859e64f-c9fd-4286-9303-cf76182b4734"/> <textElement textAlignment="Left" verticalAlignment="Middle"> <font fontName="DejaVu Sans" size="12" isBold="false" isItalic="false" isUnderline="true"/> </textElement> <text><![CDATA[Normal Underline]]></text> </staticText> <staticText> <reportElement key="" x="250" y="46" width="80" height="19" uuid="1af0605b-9669-42f9-af2c-41990708c7f8"/> <textElement textAlignment="Left" verticalAlignment="Middle"> <font fontName="DejaVu Sans" size="12" isBold="true" isItalic="true" isUnderline="false"/> </textElement> <text><![CDATA[bold Italic]]></text> </staticText> <staticText> <reportElement key="" x="340" y="46" width="150" height="19" uuid="fddc7585-5d20-4599-b64c-fd7859018020"/> <textElement textAlignment="Left" verticalAlignment="Middle"> <font fontName="DejaVu Sans" size="12" isBold="true" isItalic="true" isUnderline="true"/> </textElement> <text><![CDATA[bold Italic Underline]]></text> </staticText> </band> </detail></jasperReport>[/code]If I export the Report without this line:exporterConfiguration.setPdfaConformance(PdfaConformanceEnum.PDFA_1A);[/code]I can see the unembedded Helvetica Font: I don't need or use this font in my report. How can I turn off this. Link to comment Share on other sites More sharing options...
Solution Otto Hahn Posted June 23, 2017 Author Solution Share Posted June 23, 2017 I am amazed that no one is answering this specific question.So I try it myself:create a jasperreports.properties file in the root path of the project:# loads/override properties from default.jasperreports.propertiesnet.sf.jasperreports.default.pdf.font.name=net/sf/jasperreports/fonts/dejavu/DejaVuSans.ttfnet.sf.jasperreports.default.pdf.embedded=true[/code] or change the default font by adding this Method and call it before export to PDF/A:public void setDefaultPdfFontEmbedded() { JasperReportsContext jasperReportsContext = DefaultJasperReportsContext.getInstance(); jasperReportsContext.setProperty("net.sf.jasperreports.default.pdf.font.name", "net/sf/jasperreports/fonts/dejavu/DejaVuSans.ttf"); jasperReportsContext.setProperty("net.sf.jasperreports.default.pdf.embedded", "true");}[/code]Please correct me if this is not true! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now