IXDocReport Convert DOC to PDF
IXDocReport Convert DOC to PDF
Option 1. More appropriate when not using TemplateEngine
:
1
2
IConverter converter = ConverterRegistry.getRegistry().getConverter(options);
converter.convert(getDocStream(), result, options);
Option 2.
1
2
fr.opensagres.xdocreport.core.registry.AbstractRegistry.initializeIfNeeded Error while registration of Discovery instance fr.opensagres.xdocreport.converter.odt.odfdom.itext.discovery.ODF2PDFViaITextConverterDiscovery@31d421fd
java.lang.NoClassDefFoundError: org/odftoolkit/odfdom/doc/OdfDocument
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import fr.opensagres.xdocreport.document.IXDocReport;
import fr.opensagres.xdocreport.document.docx.DocxReport;
import fr.opensagres.xdocreport.document.registry.XDocReportRegistry;
import fr.opensagres.xdocreport.template.IContext;
import fr.opensagres.xdocreport.template.ITemplateEngine;
import fr.opensagres.xdocreport.template.TemplateEngineKind;
IXDocReport report = XDocReportRegistry.getRegistry().loadReport(
getDocStream(), TemplateEngineKind.Velocity
);
// 2) Prepare PDF options
PdfOptions pdfOptions = PdfOptions.create().fontProvider((String familyName, String encoding, float size, int style, Color color) -> {
Font result1 = null;
try {
BaseFont bfChinese = BaseFont.createFont(chnFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font fontChinese = new Font(bfChinese, size, style, color);
if (familyName != null) {
fontChinese.setFamily(familyName);
}
result1 = fontChinese;
} catch (DocumentException | IOException ex) {
System.out.println("轉 pdf 失敗: " + ex.getMessage());
}
return result1;
});
Options options = Options.getFrom(DocumentKind.DOCX).to(ConverterTypeTo.PDF);
options.subOptions(pdfOptions);
// 3) Convert to Pdf
IContext context = report.createContext();
context.put("name", "prevent empty");
report.convert(context, options, result);
Both would occured a lot of errors when not include odfdom-java
:
1
2
fr.opensagres.xdocreport.core.registry.AbstractRegistry.initializeIfNeeded Error while registration of Discovery instance fr.opensagres.xdocreport.converter.odt.odfdom.itext.discovery.ODF2PDFViaITextConverterDiscovery@31d421fd
java.lang.NoClassDefFoundError: org/odftoolkit/odfdom/doc/OdfDocument
Dependency:
- Silent the error
1
2
3
4
5
<dependency>
<groupId>org.odftoolkit</groupId>
<artifactId>odfdom-java</artifactId>
<version>0.12.0</version>
</dependency>
- Still needs old
itext
for multibyte characters:
1
2
3
4
5
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
</dependency>
This post is licensed under CC BY 4.0 by the author.