package com.kongjs.emo.web.util;
import com.openhtmltopdf.outputdevice.helper.BaseRendererBuilder;
import com.vladsch.flexmark.docx.converter.DocxRenderer;
import com.vladsch.flexmark.ext.definition.DefinitionExtension;
import com.vladsch.flexmark.ext.emoji.EmojiExtension;
import com.vladsch.flexmark.ext.footnotes.FootnoteExtension;
import com.vladsch.flexmark.ext.gfm.strikethrough.StrikethroughSubscriptExtension;
import com.vladsch.flexmark.ext.ins.InsExtension;
import com.vladsch.flexmark.ext.superscript.SuperscriptExtension;
import com.vladsch.flexmark.ext.tables.TablesExtension;
import com.vladsch.flexmark.ext.toc.SimTocExtension;
import com.vladsch.flexmark.ext.toc.TocExtension;
import com.vladsch.flexmark.ext.wikilink.WikiLinkExtension;
import com.vladsch.flexmark.html.HtmlRenderer;
import com.vladsch.flexmark.html2md.converter.FlexmarkHtmlConverter;
import com.vladsch.flexmark.parser.Parser;
import com.vladsch.flexmark.pdf.converter.PdfConverterExtension;
import com.vladsch.flexmark.util.ast.Node;
import com.vladsch.flexmark.util.data.DataHolder;
import com.vladsch.flexmark.util.data.MutableDataSet;
import org.docx4j.Docx4J;
import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Arrays;
public class MarkdownUtils {
public static String HtmlToMarkdown(String html) {
return FlexmarkHtmlConverter.builder().build().convert(html);
}
private static final DataHolder OPTIONS = new MutableDataSet()
.set(Parser.EXTENSIONS, Arrays.asList(
DefinitionExtension.create(),
EmojiExtension.create(),
FootnoteExtension.create(),
StrikethroughSubscriptExtension.create(),
InsExtension.create(),
SuperscriptExtension.create(),
TablesExtension.create(),
TocExtension.create(),
SimTocExtension.create(),
WikiLinkExtension.create()
))
.set(DocxRenderer.SUPPRESS_HTML, true);
public static void MarkdownToDocx(String markdown, File file) {
Parser PARSER = Parser.builder(OPTIONS).build();
DocxRenderer RENDERER = DocxRenderer.builder(OPTIONS).build();
Node document = PARSER.parse(markdown);
String xml = RENDERER.render(document);
WordprocessingMLPackage template = DocxRenderer.getDefaultTemplate();
RENDERER.render(document, template);
try {
template.save(file, Docx4J.FLAG_SAVE_ZIP_FILE);
} catch (Docx4JException e) {
e.printStackTrace();
}
}
public static void MarkdownToPDF(String markdown, File file) throws FileNotFoundException {
Parser parser = Parser.builder(OPTIONS).build();
HtmlRenderer renderer = HtmlRenderer.builder(OPTIONS).build();
Node document = parser.parse(markdown);
String html = renderer.render(document);
PdfConverterExtension.exportToPdf(new FileOutputStream(file), html, "", BaseRendererBuilder.TextDirection.LTR);
}
}

- 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
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
<dependency>
<groupId>org.jsoupgroupId>
<artifactId>jsoupartifactId>
<version>1.17.2version>
dependency>
<dependency>
<groupId>com.vladsch.flexmarkgroupId>
<artifactId>flexmark-allartifactId>
<version>0.62.2version>
dependency>
<dependency>
<groupId>com.vladsch.flexmarkgroupId>
<artifactId>flexmark-docx-converterartifactId>
<version>0.62.2version>
dependency>
<dependency>
<groupId>org.docx4jgroupId>
<artifactId>docx4j-ImportXHTMLartifactId>
<version>8.3.8version>
dependency>
<dependency>
<groupId>org.docx4jgroupId>
<artifactId>docx4j-JAXB-InternalartifactId>
<version>8.3.8version>
dependency>
<dependency>
<groupId>org.docx4jgroupId>
<artifactId>docx4j-JAXB-ReferenceImplartifactId>
<version>8.3.8version>
dependency>
<dependency>
<groupId>org.docx4jgroupId>
<artifactId>docx4j-export-foartifactId>
<version>8.3.8version>
dependency>
<dependency>
<groupId>org.xhtmlrenderergroupId>
<artifactId>flying-saucer-pdfartifactId>
<version>9.4.1version>
dependency>
<dependency>
<groupId>org.xhtmlrenderergroupId>
<artifactId>flying-saucer-pdf-itext5artifactId>
<version>9.4.1version>
dependency>
<dependency>
<groupId>com.openhtmltopdfgroupId>
<artifactId>openhtmltopdf-pdfboxartifactId>
<version>1.0.10version>
dependency>
<dependency>
<groupId>com.openhtmltopdfgroupId>
<artifactId>openhtmltopdf-java2dartifactId>
<version>1.0.10version>
dependency>
<dependency>
<groupId>com.openhtmltopdfgroupId>
<artifactId>openhtmltopdf-rtl-supportartifactId>
<version>1.0.10version>
dependency>
<dependency>
<groupId>com.openhtmltopdfgroupId>
<artifactId>openhtmltopdf-svg-supportartifactId>
<version>1.0.10version>
dependency>
<dependency>
<groupId>com.openhtmltopdfgroupId>
<artifactId>openhtmltopdf-mathml-supportartifactId>
<version>1.0.10version>
dependency>
<dependency>
<groupId>com.openhtmltopdfgroupId>
<artifactId>openhtmltopdf-latex-supportartifactId>
<version>1.0.10version>
dependency>

- 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
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75