-
Notifications
You must be signed in to change notification settings - Fork 571
Description
Hi,
This issue is similar to #7 but for recent versions of the .NET framework.
If you create a blank document and set some text to the following field code (note the extra space):
{ HYPERLINK "mailto:email@address%20.com" }
Running the following on .NET 4.0 will work fine:
var wpdoc = WordprocessingDocument.Open(@"TestDoc.docx", false)
Running the same line on .NET 4.5+ will throw the following exception:
DocumentFormat.OpenXml.Packaging.OpenXmlPackageException: Invalid Hyperlink: Malformed URI is embedded as a hyperlink in the document.
at DocumentFormat.OpenXml.Packaging.OpenXmlPackage.Load() in OpenXmlPackage.cs: line 490
at DocumentFormat.OpenXml.Packaging.OpenXmlPackage.OpenCore(String path, Boolean readWriteMode) in OpenXmlPackage.cs: line 402
at DocumentFormat.OpenXml.Packaging.WordprocessingDocument.Open(String path, Boolean isEditable, OpenSettings openSettings) in PackageDocument.cs: line 297
at DocumentFormat.OpenXml.Packaging.WordprocessingDocument.Open(String path, Boolean isEditable) in PackageDocument.cs: line 256
The inner-exception being this:
at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
at System.Uri..ctor(String uriString, UriKind uriKind)
at MS.Internal.IO.Packaging.InternalRelationshipCollection.ProcessRelationshipAttributes(XmlCompatibilityReader reader)
at MS.Internal.IO.Packaging.InternalRelationshipCollection.ParseRelationshipPart(PackagePart part)
at MS.Internal.IO.Packaging.InternalRelationshipCollection..ctor(Package package, PackagePart part)
at System.IO.Packaging.PackagePart.EnsureRelationships()
at System.IO.Packaging.PackagePart.GetRelationshipsHelper(String filterString)
at System.IO.Packaging.PackagePart.GetRelationships()
at DocumentFormat.OpenXml.Packaging.PackagePartRelationshipPropertyCollection..ctor(PackagePart packagePart)
at DocumentFormat.OpenXml.Packaging.OpenXmlPart.Load(OpenXmlPackage openXmlPackage, OpenXmlPart parent, Uri uriTarget, String id, Dictionary`2 loadedParts)
at DocumentFormat.OpenXml.Packaging.OpenXmlPartContainer.LoadReferencedPartsAndRelationships(OpenXmlPackage openXmlPackage, OpenXmlPart sourcePart, RelationshipCollection relationshipCollection, Dictionary`2 loadedParts)
at DocumentFormat.OpenXml.Packaging.OpenXmlPackage.Load()
I assume this is due to the following change introduced in .Net 4.5 (https://msdn.microsoft.com/en-us/library/hh367887%28v=vs.110%29.aspx):
An invalid mailto: URL throws an exception in the Uri class constructor.
Word seems to be perfectly happy with the malformed mailto hyperlink so I assume this would count as a valid document.
I am therefore not sure how this could be fixed elegantly.
Thanks,