Skip to content

Commit 3eea274

Browse files
Include data-original picture sources
1 parent 85ee4a1 commit 3eea274

2 files changed

Lines changed: 35 additions & 1 deletion

File tree

OfficeIMO.Tests/Html.Images.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,40 @@ public void HtmlToWord_PictureSourceSet_UsesFirstAllowedImageCandidate() {
263263
Assert.Empty(options.Diagnostics);
264264
}
265265

266+
[Fact]
267+
public void HtmlToWord_PictureSource_UsesDataOriginalBeforeImageFallback() {
268+
var requested = new List<Uri>();
269+
const string validPng = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+/p9sAAAAASUVORK5CYII=";
270+
using var httpClient = new HttpClient(new FakeHtmlHttpMessageHandler(request => {
271+
requested.Add(request.RequestUri!);
272+
return Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK) {
273+
Content = new ByteArrayContent(Convert.FromBase64String(validPng)) {
274+
Headers = {
275+
ContentType = new MediaTypeHeaderValue("image/png")
276+
}
277+
}
278+
});
279+
}));
280+
var options = new HtmlToWordOptions {
281+
HttpClient = httpClient
282+
};
283+
options.AllowedImageHosts.Add("images.example.test");
284+
string html = """
285+
<picture>
286+
<source data-original="https://images.example.test/high.png">
287+
<img src="https://images.example.test/fallback.png" alt="Lazy picture" />
288+
</picture>
289+
""";
290+
291+
var doc = html.LoadFromHtml(options);
292+
293+
Assert.Single(doc.Images);
294+
var request = Assert.Single(requested);
295+
Assert.Equal("images.example.test", request.Host);
296+
Assert.Equal("/high.png", request.AbsolutePath);
297+
Assert.Empty(options.Diagnostics);
298+
}
299+
266300
[Fact]
267301
public void HtmlToWord_ImageSourceSet_UsesResponsiveCandidateBeforeSourceFallback() {
268302
var requested = new List<Uri>();

OfficeIMO.Word.Html/Converters/HtmlToWordConverter.Images.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace OfficeIMO.Word.Html {
1010
internal partial class HtmlToWordConverter {
1111
private static readonly HtmlUrlPolicy ImageSourceResolutionPolicy = CreateImageSourceResolutionPolicy();
1212
private static readonly string[] WordImageSrcSetAttributes = { "srcset", "data-srcset", "data-original-srcset", "data-lazy-srcset" };
13-
private static readonly string[] WordPictureSourceAttributes = { "src", "data-src", "data-original-src", "data-lazy-src" };
13+
private static readonly string[] WordPictureSourceAttributes = { "src", "data-src", "data-original", "data-original-src", "data-lazy-src" };
1414

1515
private void ProcessImage(IHtmlImageElement img, WordDocument doc, HtmlToWordOptions options, WordParagraph? currentParagraph, WordHeaderFooter? headerFooter) {
1616
var src = ResolveWordImageSource(img, options);

0 commit comments

Comments
 (0)