Jump to content
We've recently updated our Privacy Statement, available here ×

NightsoulCC4

Members
  • Posts

    2
  • Joined

  • Last visited

 Content Type 

Profiles

Forum

Events

Featured Visualizations

Knowledge Base

Documentation (PDF Downloads)

Blog

Documentation (Test Area)

Documentation

Dr. Jaspersoft Webinar Series

Security Advisories

Downloads

Everything posted by NightsoulCC4

  1. Dear Teodor danciu I tried to add <pdfEncoding> tag but not sure it correct?, Or I need to edit somethings else. Here is it. <?xml version="1.0" encoding="UTF-8"?> <fontFamilies> <!-- The jrprint file use this font families. --> <fontFamily name="TH Sarabun New"> <normal><![CDATA[fonts/TH Sarabun New/THSarabunNew.ttf]]></normal> <bold><![CDATA[fonts/TH Sarabun New/THSarabunNewBold.ttf]]></bold> <italic><![CDATA[fonts/TH Sarabun New/THSarabunNewItalic.ttf]]></italic> <boldItalic><![CDATA[fonts/TH Sarabun New/THSarabunNewBoldItalic.ttf]]></boldItalic> <pdfEmbedded><![CDATA[true]]></pdfEmbedded> <pdfEncoding>ISO-8859-1</pdfEncoding> </fontFamily> </fontFamilies> and my pdf file show me ????? text. The ? is a Thai text. result.pdf
  2. Java version: 8 (1.8) Spring boot version: 2.4.0 jasper report dependency version: 5.1.2 I have a problem When I tried to convert .jrPrint file with Thai text to .pdf file here's my file when I opened on JasperSoft. My Thai text show the result is □□□ (Square), And the English text show it usually. Here is my code in Java Spring Boot Project package com.nattatat.jrPrintToPdf.Service; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.stereotype.Service; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JRExporterParameter; import net.sf.jasperreports.engine.JasperExportManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.export.JRPdfExporter; import net.sf.jasperreports.engine.export.JRPdfExporterParameter; import net.sf.jasperreports.engine.util.JRLoader; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.kernel.pdf.PdfAConformanceLevel; import com.itextpdf.kernel.pdf.PdfOutputIntent; import com.itextpdf.pdfa.PdfADocument; import java.io.*; @Service public class JasperReportService{ protected final static Logger log = LogManager.getLogger(JasperReportService.class); public void convertJrprintToPdf(String jrPrintFilePath, String pdfOutputPath) { log.info("\noutput: " + pdfOutputPath); try { JasperPrint jasperPrint = (JasperPrint) JRLoader.loadObjectFromFile(jrPrintFilePath); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); // Set the export font map for PDF JRPdfExporter exporter = new JRPdfExporter(); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream); exporter.setParameter(JRPdfExporterParameter.CHARACTER_ENCODING, "UTF-8"); exporter.exportReport(); JasperExportManager.exportReportToPdfFile(jasperPrint, pdfOutputPath); byte[] byteArray = outputStream.toByteArray(); // Save the byte array to a file (optional) try (FileOutputStream fileOutputStream = new FileOutputStream(pdfOutputPath)) { fileOutputStream.write(byteArray); System.out.println("PDF file saved successfully."); } catch (IOException e) { e.printStackTrace(); } System.out.println("PDF exported successfully."); } catch (JRException e) { e.printStackTrace(); System.out.println("Error exporting to PDF."); } } public void convertJrprintToPdfa(String jrPrintFilePath, String pdfOutputPath) throws FileNotFoundException { try { // Load .jrprint file JasperPrint jasperPrint = (JasperPrint) JRLoader.loadObject(new File(jrPrintFilePath)); FileOutputStream fileOutputStream = new FileOutputStream(pdfOutputPath); // Create PdfAWriter PdfWriter pdfWriter = new PdfWriter(fileOutputStream); PdfADocument pdfADocument = new PdfADocument(pdfWriter, PdfAConformanceLevel.PDF_A_1B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", null)); // Create JasperReports exporter JRPdfExporter exporter = new JRPdfExporter(); // Configure exporter exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, fileOutputStream); exporter.setParameter(JRPdfExporterParameter.CHARACTER_ENCODING, "UTF-8"); // Export the report to PDF/A exporter.exportReport(); // Close the PdfADocument pdfADocument.close(); System.out.println("PDF exported successfully."); } catch (JRException | IOException e) { e.printStackTrace(); } } } And this is my fonts.xml for embedded font <?xml version="1.0" encoding="UTF-8"?> <fontFamilies> <!-- The jrprint file use this font families. --> <fontFamily name="TH Sarabun New"> <normal><![CDATA[fonts/TH Sarabun New/THSarabunNew.ttf]]></normal> <bold><![CDATA[fonts/TH Sarabun New/THSarabunNewBold.ttf]]></bold> <italic><![CDATA[fonts/TH Sarabun New/THSarabunNewItalic.ttf]]></italic> <boldItalic><![CDATA[fonts/TH Sarabun New/THSarabunNewBoldItalic.ttf]]></boldItalic> <pdfEmbedded><![CDATA[true]]></pdfEmbedded> </fontFamily> <fontFamily name="TH Sarabun PSK"> <normal><![CDATA[fonts/TH Sarabun PSK/THSarabun.ttf]]></normal> <bold><![CDATA[fonts/TH Sarabun PSK/THSarabun Bold.ttf]]></bold> <italic><![CDATA[fonts/TH Sarabun PSK/THSarabun Italic.ttf]]></italic> <boldItalic><![CDATA[fonts/TH Sarabun PSK/THSarabun Bold Italic.ttf]]></boldItalic> <pdfEmbedded><![CDATA[true]]></pdfEmbedded> </fontFamily> <fontFamily name="Angsana New"> <normal><![CDATA[fonts/Angsana New/ANGSA.ttf]]></normal> <bold><![CDATA[fonts/Angsana New/angsab.ttf]]></bold> <italic><![CDATA[fonts/Angsana New/ANGSAI.ttf]]></italic> <boldItalic><![CDATA[fonts/Angsana New/AngsanaNewBoldItalic.ttf]]></boldItalic> <pdfEmbedded><![CDATA[true]]></pdfEmbedded> </fontFamily> </fontFamilies> From these code I used. The .pdf result didn't show Thai text (Show only English text).
×
×
  • Create New...