Skip to content

Commit 3a67cf8

Browse files
authored
Read anchor attribute of hyperlink and append it to href
2 parents cd8ebd2 + 38e3cc1 commit 3a67cf8

File tree

4 files changed

+34
-1
lines changed

4 files changed

+34
-1
lines changed

OpenXmlPowerTools.Tests/OpenXMLWordprocessingMLToHtmlConverter/WmlToHtmlConverterTests.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,28 @@ public async Task HC002_NoCssClasses(string name, int expectedPixelNoise)
9292
await ConvertToHtml(sourceDocx, oxPtConvertedDestHtml, settings, expectedPixelNoise, false);
9393
}
9494

95+
[Theory]
96+
[InlineData("HC023-Hyperlink.docx", "href=\"http://example.com/#anchor\"")]
97+
public async Task HC003_ContainsSubstring(string name, params string[] expectedSubstrings)
98+
{
99+
var sourceDir = new DirectoryInfo("../../../../TestFiles/");
100+
var sourceDocx = new FileInfo(Path.Combine(sourceDir.FullName, name));
101+
var settings = new WmlToHtmlConverterSettings(sourceDocx.FullName, new ImageHandler(), new TextDummyHandler(), new SymbolHandler(), new BreakHandler(), new FontHandler(), false);
102+
103+
var byteArray = await File.ReadAllBytesAsync(sourceDocx.FullName);
104+
using var memoryStream = new MemoryStream();
105+
memoryStream.Write(byteArray, 0, byteArray.Length);
106+
using var wDoc = WordprocessingDocument.Open(memoryStream, true);
107+
108+
var html = WmlToHtmlConverter.ConvertToHtml(wDoc, settings);
109+
var htmlString = html.ToString(SaveOptions.DisableFormatting);
110+
111+
foreach (string expectedSubstring in expectedSubstrings)
112+
{
113+
Assert.Contains(expectedSubstring, htmlString);
114+
}
115+
}
116+
95117
private static async Task ConvertToHtml(FileInfo sourceDocx, FileInfo destFileName, WmlToHtmlConverterSettings settings, int expectedPixeNoise, bool imageSizeMayDiffer)
96118
{
97119
var byteArray = File.ReadAllBytes(sourceDocx.FullName);

OpenXmlPowerTools/OpenXMLWordprocessingMLToHtmlConverter/WmlToHtmlConverter.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -322,8 +322,19 @@ private static void SetStyleElementValue(XElement xhtml, string styleValue)
322322
{
323323
try
324324
{
325-
var a = new XElement(Xhtml.a, new XAttribute("href", wordDoc.MainDocumentPart?.HyperlinkRelationships.First(x => x.Id == (string)element.Attribute(R.id)).Uri), element.Elements(W.r).Select(run => ConvertRun(wordDoc, settings, run)));
325+
var href = wordDoc.MainDocumentPart
326+
?.HyperlinkRelationships
327+
.First(x => x.Id == (string?)element.Attribute(R.id))
328+
.Uri
329+
.OriginalString
330+
?? string.Empty;
331+
var anchor = element.Attribute(W.anchor);
332+
if (anchor != null)
333+
{
334+
href += "#" + anchor.Value;
335+
}
326336

337+
var a = new XElement(Xhtml.a, new XAttribute("href", href), element.Elements(W.r).Select(run => ConvertRun(wordDoc, settings, run)));
327338
if (!a.Nodes().Any())
328339
{
329340
a.Add(new XText(""));

TestFiles/HC023-Hyperlink.docx

675 Bytes
Binary file not shown.
2.55 KB
Loading

0 commit comments

Comments
 (0)