diff --git a/OpenXmlPowerTools/OpenXmlPowerTools.csproj b/OpenXmlPowerTools/OpenXmlPowerTools.csproj
index c7220506..8ec9f317 100644
--- a/OpenXmlPowerTools/OpenXmlPowerTools.csproj
+++ b/OpenXmlPowerTools/OpenXmlPowerTools.csproj
@@ -21,4 +21,4 @@
-
\ No newline at end of file
+
diff --git a/OpenXmlPowerTools/WmlToHtmlConverter.cs b/OpenXmlPowerTools/WmlToHtmlConverter.cs
index 8c908cfd..f0fd89f1 100644
--- a/OpenXmlPowerTools/WmlToHtmlConverter.cs
+++ b/OpenXmlPowerTools/WmlToHtmlConverter.cs
@@ -10,6 +10,8 @@
using System.Text;
using System.Xml.Linq;
using DocumentFormat.OpenXml.Packaging;
+using DocumentFormat.OpenXml.Wordprocessing;
+using FontFamily = System.Drawing.FontFamily;
// 200e lrm - LTR
// 200f rlm - RTL
@@ -405,19 +407,25 @@ private static object ConvertToHtmlTransform(WordprocessingDocument wordDoc,
{
return ProcessParagraph(wordDoc, settings, element, suppressTrailingWhiteSpace, currentMarginLeft);
}
-
+
// Transform hyperlinks to the XHTML h:a element.
if (element.Name == W.hyperlink && element.Attribute(R.id) != null)
{
try
{
- var a = new XElement(Xhtml.a,
- new XAttribute("href",
- wordDoc.MainDocumentPart
+ var preFragmentUrl = wordDoc.MainDocumentPart
.HyperlinkRelationships
.First(x => x.Id == (string)element.Attribute(R.id))
- .Uri
- ),
+ .Uri.AbsoluteUri;
+ var anchor = wordDoc.MainDocumentPart.Document
+ .Descendants()
+ .First(x => x.Id == (string)element.Attribute(R.id))
+ .Anchor;
+ var fullUrl = preFragmentUrl;
+ if (anchor != null)
+ fullUrl += "#" + anchor;
+ var a = new XElement(Xhtml.a,
+ new XAttribute("href",fullUrl),
element.Elements(W.r).Select(run => ConvertRun(wordDoc, settings, run))
);
if (!a.Nodes().Any())
@@ -2972,7 +2980,7 @@ private static object ConvertContentThatCanContainFields(WordprocessingDocument
var content = g.DescendantsAndSelf(W.r).Select(run => ConvertRun(wordDoc, settings, run));
var a = parsed.Arguments.Length > 0
- ? new XElement(Xhtml.a, new XAttribute("href", parsed.Arguments[0]), content)
+ ? new XElement(Xhtml.a, new XAttribute("href", string.Join("#", parsed.Arguments)), content)
: new XElement(Xhtml.a, content);
var a2 = a as XElement;
if (!a2.Nodes().Any())
diff --git a/TestFiles/HC023-Hyperlink.docx b/TestFiles/HC023-Hyperlink.docx
index ba2b2449..5e500926 100644
Binary files a/TestFiles/HC023-Hyperlink.docx and b/TestFiles/HC023-Hyperlink.docx differ