aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtmlOptions.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2025-09-10 16:40:27 +0100
committerMichael Williamson <mike@zwobble.org>2025-09-10 16:40:27 +0100
commit444dc1b64c015197bf6b5219da9459bc0cf6f787 (patch)
treee34a6f67f643d5fd160d1465444ddd9c9b872439 /src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtmlOptions.java
parent7ef256b4b287af758d5bad0912de7140a4f69fbf (diff)
Support disabling external file access
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtmlOptions.java')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtmlOptions.java88
1 files changed, 82 insertions, 6 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtmlOptions.java b/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtmlOptions.java
index 2c455e2..d12bbd4 100644
--- a/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtmlOptions.java
+++ b/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtmlOptions.java
@@ -16,6 +16,7 @@ public class DocumentToHtmlOptions {
StyleMap.EMPTY,
false,
false,
+ false,
InternalImageConverter.imgElement(image -> {
String base64 = Base64Encoding.streamToBase64(image::getInputStream);
String src = "data:" + image.getContentType() + ";base64," + base64;
@@ -30,6 +31,7 @@ public class DocumentToHtmlOptions {
private final StyleMap embeddedStyleMap;
private final boolean disableDefaultStyleMap;
private final boolean disableEmbeddedStyleMap;
+ private final boolean disableExternalFileAccess;
private final InternalImageConverter imageConverter;
public DocumentToHtmlOptions(
@@ -39,6 +41,7 @@ public class DocumentToHtmlOptions {
StyleMap embeddedStyleMap,
boolean disableDefaultStyleMap,
boolean disableEmbeddedStyleMap,
+ boolean disableExternalFileAccess,
InternalImageConverter imageConverter
) {
this.idPrefix = idPrefix;
@@ -47,15 +50,34 @@ public class DocumentToHtmlOptions {
this.embeddedStyleMap = embeddedStyleMap;
this.disableDefaultStyleMap = disableDefaultStyleMap;
this.disableEmbeddedStyleMap = disableEmbeddedStyleMap;
+ this.disableExternalFileAccess = disableExternalFileAccess;
this.imageConverter = imageConverter;
}
public DocumentToHtmlOptions idPrefix(String prefix) {
- return new DocumentToHtmlOptions(prefix, preserveEmptyParagraphs, styleMap, embeddedStyleMap, disableDefaultStyleMap, disableEmbeddedStyleMap, imageConverter);
+ return new DocumentToHtmlOptions(
+ prefix,
+ preserveEmptyParagraphs,
+ styleMap,
+ embeddedStyleMap,
+ disableDefaultStyleMap,
+ disableEmbeddedStyleMap,
+ disableExternalFileAccess,
+ imageConverter
+ );
}
public DocumentToHtmlOptions preserveEmptyParagraphs() {
- return new DocumentToHtmlOptions(idPrefix, true, styleMap, embeddedStyleMap, disableDefaultStyleMap, disableEmbeddedStyleMap, imageConverter);
+ return new DocumentToHtmlOptions(
+ idPrefix,
+ true,
+ styleMap,
+ embeddedStyleMap,
+ disableDefaultStyleMap,
+ disableEmbeddedStyleMap,
+ disableExternalFileAccess,
+ imageConverter
+ );
}
public DocumentToHtmlOptions addStyleMap(String styleMap) {
@@ -63,19 +85,68 @@ public class DocumentToHtmlOptions {
}
public DocumentToHtmlOptions addStyleMap(StyleMap styleMap) {
- return new DocumentToHtmlOptions(idPrefix, preserveEmptyParagraphs, this.styleMap.update(styleMap), embeddedStyleMap, disableDefaultStyleMap, disableEmbeddedStyleMap, imageConverter);
+ return new DocumentToHtmlOptions(
+ idPrefix,
+ preserveEmptyParagraphs,
+ this.styleMap.update(styleMap),
+ embeddedStyleMap,
+ disableDefaultStyleMap,
+ disableEmbeddedStyleMap,
+ disableExternalFileAccess,
+ imageConverter
+ );
}
public DocumentToHtmlOptions disableDefaultStyleMap() {
- return new DocumentToHtmlOptions(idPrefix, preserveEmptyParagraphs, styleMap, embeddedStyleMap, true, disableEmbeddedStyleMap, imageConverter);
+ return new DocumentToHtmlOptions(
+ idPrefix,
+ preserveEmptyParagraphs,
+ styleMap,
+ embeddedStyleMap,
+ true,
+ disableEmbeddedStyleMap,
+ disableExternalFileAccess,
+ imageConverter
+ );
}
public DocumentToHtmlOptions disableEmbeddedStyleMap() {
- return new DocumentToHtmlOptions(idPrefix, preserveEmptyParagraphs, styleMap, embeddedStyleMap, disableDefaultStyleMap, true, imageConverter);
+ return new DocumentToHtmlOptions(
+ idPrefix,
+ preserveEmptyParagraphs,
+ styleMap,
+ embeddedStyleMap,
+ disableDefaultStyleMap,
+ true,
+ disableExternalFileAccess,
+ imageConverter
+ );
+ }
+
+ public DocumentToHtmlOptions disableExternalFileAccess() {
+ return new DocumentToHtmlOptions(
+ idPrefix,
+ preserveEmptyParagraphs,
+ styleMap,
+ embeddedStyleMap,
+ disableDefaultStyleMap,
+ disableEmbeddedStyleMap,
+ true,
+ imageConverter
+ );
}
public DocumentToHtmlOptions addEmbeddedStyleMap(StyleMap embeddedStyleMap) {
- return new DocumentToHtmlOptions(idPrefix, preserveEmptyParagraphs, styleMap, embeddedStyleMap, disableDefaultStyleMap, disableEmbeddedStyleMap, imageConverter);
+ return new DocumentToHtmlOptions(
+ idPrefix,
+ preserveEmptyParagraphs,
+ styleMap,
+ embeddedStyleMap,
+ disableDefaultStyleMap,
+ disableEmbeddedStyleMap,
+ disableExternalFileAccess,
+ imageConverter
+ );
}
public DocumentToHtmlOptions imageConverter(ImageConverter.ImgElement imageConverter) {
@@ -86,6 +157,7 @@ public class DocumentToHtmlOptions {
embeddedStyleMap,
disableDefaultStyleMap,
disableEmbeddedStyleMap,
+ disableExternalFileAccess,
InternalImageConverter.imgElement(imageConverter)
);
}
@@ -110,6 +182,10 @@ public class DocumentToHtmlOptions {
return styleMap;
}
+ public boolean externalFileAccess() {
+ return !this.disableExternalFileAccess;
+ }
+
public InternalImageConverter imageConverter() {
return imageConverter;
}