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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
package org.zwobble.mammoth.internal.conversion;
import org.zwobble.mammoth.images.ImageConverter;
import org.zwobble.mammoth.internal.styles.DefaultStyles;
import org.zwobble.mammoth.internal.styles.StyleMap;
import org.zwobble.mammoth.internal.styles.parsing.StyleMapParser;
import org.zwobble.mammoth.internal.util.Base64Encoding;
import static org.zwobble.mammoth.internal.util.Maps.map;
public class DocumentToHtmlOptions {
public static final DocumentToHtmlOptions DEFAULT = new DocumentToHtmlOptions(
"",
false,
StyleMap.EMPTY,
StyleMap.EMPTY,
false,
false,
InternalImageConverter.imgElement(image -> {
String base64 = Base64Encoding.streamToBase64(image::getInputStream);
String src = "data:" + image.getContentType() + ";base64," + base64;
return map("src", src);
})
);
private final String idPrefix;
private final boolean preserveEmptyParagraphs;
private final StyleMap styleMap;
private final StyleMap embeddedStyleMap;
private final boolean disableDefaultStyleMap;
private final boolean disableEmbeddedStyleMap;
private final InternalImageConverter imageConverter;
public DocumentToHtmlOptions(
String idPrefix,
boolean preserveEmptyParagraphs,
StyleMap styleMap,
StyleMap embeddedStyleMap,
boolean disableDefaultStyleMap,
boolean disableEmbeddedStyleMap,
InternalImageConverter imageConverter
) {
this.idPrefix = idPrefix;
this.preserveEmptyParagraphs = preserveEmptyParagraphs;
this.styleMap = styleMap;
this.embeddedStyleMap = embeddedStyleMap;
this.disableDefaultStyleMap = disableDefaultStyleMap;
this.disableEmbeddedStyleMap = disableEmbeddedStyleMap;
this.imageConverter = imageConverter;
}
public DocumentToHtmlOptions idPrefix(String prefix) {
return new DocumentToHtmlOptions(prefix, preserveEmptyParagraphs, styleMap, embeddedStyleMap, disableDefaultStyleMap, disableEmbeddedStyleMap, imageConverter);
}
public DocumentToHtmlOptions preserveEmptyParagraphs() {
return new DocumentToHtmlOptions(idPrefix, true, styleMap, embeddedStyleMap, disableDefaultStyleMap, disableEmbeddedStyleMap, imageConverter);
}
public DocumentToHtmlOptions addStyleMap(String styleMap) {
return addStyleMap(StyleMapParser.parse(styleMap));
}
public DocumentToHtmlOptions addStyleMap(StyleMap styleMap) {
return new DocumentToHtmlOptions(idPrefix, preserveEmptyParagraphs, this.styleMap.update(styleMap), embeddedStyleMap, disableDefaultStyleMap, disableEmbeddedStyleMap, imageConverter);
}
public DocumentToHtmlOptions disableDefaultStyleMap() {
return new DocumentToHtmlOptions(idPrefix, preserveEmptyParagraphs, styleMap, embeddedStyleMap, true, disableEmbeddedStyleMap, imageConverter);
}
public DocumentToHtmlOptions disableEmbeddedStyleMap() {
return new DocumentToHtmlOptions(idPrefix, preserveEmptyParagraphs, styleMap, embeddedStyleMap, disableDefaultStyleMap, true, imageConverter);
}
public DocumentToHtmlOptions addEmbeddedStyleMap(StyleMap embeddedStyleMap) {
return new DocumentToHtmlOptions(idPrefix, preserveEmptyParagraphs, styleMap, embeddedStyleMap, disableDefaultStyleMap, disableEmbeddedStyleMap, imageConverter);
}
public DocumentToHtmlOptions imageConverter(ImageConverter.ImgElement imageConverter) {
return new DocumentToHtmlOptions(
idPrefix,
preserveEmptyParagraphs,
styleMap,
embeddedStyleMap,
disableDefaultStyleMap,
disableEmbeddedStyleMap,
InternalImageConverter.imgElement(imageConverter)
);
}
public String idPrefix() {
return idPrefix;
}
public boolean shouldPreserveEmptyParagraphs() {
return preserveEmptyParagraphs;
}
public StyleMap styleMap() {
StyleMap styleMap = StyleMap.EMPTY;
if (!disableDefaultStyleMap) {
styleMap = styleMap.update(DefaultStyles.DEFAULT_STYLE_MAP);
}
if (!disableEmbeddedStyleMap) {
styleMap = styleMap.update(embeddedStyleMap);
}
styleMap = styleMap.update(this.styleMap);
return styleMap;
}
public InternalImageConverter imageConverter() {
return imageConverter;
}
}
|