Skip to content
This repository has been archived by the owner on Nov 16, 2023. It is now read-only.

DocumentFormat.OpenXml.WordProcessing namespace .NET wrappers #86

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
84 changes: 84 additions & 0 deletions BaseApp/COD50018.TXT
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
OBJECT Codeunit 50018 DotNet_WordprocessingDocument
{
OBJECT-PROPERTIES
{
Date=;
Time=;
Version List=;
}
PROPERTIES
{
OnRun=BEGIN
END;

}
CODE
{
VAR
DotNetWordprocessingDocument@1000 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Packaging.WordprocessingDocument";
DotNetMemoryStream@1001 : DotNet "'mscorlib'.System.IO.MemoryStream";

[External]
PROCEDURE Create@1(DocumentType@1001 : Codeunit 50077;AutoSave@1002 : Boolean);
VAR
DotNetWordprocessingDocumentType@1003 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.WordprocessingDocumentType";
BEGIN
DotNetMemoryStream := DotNetMemoryStream.MemoryStream;
DocumentType.GetWordProcessingDocumentType(DotNetWordprocessingDocumentType);
DotNetWordprocessingDocument := DotNetWordprocessingDocument.Create(DotNetMemoryStream, DotNetWordprocessingDocumentType, AutoSave);
END;

[External]
PROCEDURE Open@2(DocumentStream@1000 : InStream;Editable@1001 : Boolean);
BEGIN
DotNetMemoryStream := DotNetMemoryStream.MemoryStream;
COPYSTREAM(DotNetMemoryStream, DocumentStream);
DotNetMemoryStream.Position := 0;
DotNetWordprocessingDocument := DotNetWordprocessingDocument.Open(DotNetMemoryStream, Editable);
END;

[External]
PROCEDURE Close@3();
BEGIN
DotNetWordprocessingDocument.Close;
END;

[External]
PROCEDURE Save@4(ResultStream@1000 : OutStream);
BEGIN
COPYSTREAM(ResultStream, DotNetMemoryStream);
END;

[External]
PROCEDURE AddMainDocumentPart@5(VAR MainDocumentPart@1000 : Codeunit 50019);
VAR
DotNetMainDocumentPart@1001 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Packaging.MainDocumentPart";
BEGIN
DotNetMainDocumentPart := DotNetWordprocessingDocument.AddMainDocumentPart;
MainDocumentPart.SetMainDocumentPart(DotNetMainDocumentPart);
END;

[External]
PROCEDURE MainDocumentPart@6(VAR MainDocumentPart@1000 : Codeunit 50019);
VAR
DotNetMainDocumentPart@1001 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Packaging.MainDocumentPart";
BEGIN
DotNetMainDocumentPart := DotNetWordprocessingDocument.MainDocumentPart;
MainDocumentPart.SetMainDocumentPart(DotNetMainDocumentPart);
END;

PROCEDURE SetWordProcessingDocument@7(VAR NewWordprocessingDocument@1000 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Packaging.WordprocessingDocument");
BEGIN
DotNetWordprocessingDocument := NewWordprocessingDocument;
END;

PROCEDURE GetWordProcessingDocument@8(VAR CurrentWordprocessingDocument@1000 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Packaging.WordprocessingDocument");
BEGIN
CurrentWordprocessingDocument := DotNetWordprocessingDocument;
END;

BEGIN
END.
}
}

122 changes: 122 additions & 0 deletions BaseApp/COD50019.TXT
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
OBJECT Codeunit 50019 DotNet_Word.MainDocumentPart
{
OBJECT-PROPERTIES
{
Date=;
Time=;
Version List=;
}
PROPERTIES
{
OnRun=BEGIN
END;

}
CODE
{
VAR
DotNetMainDocumentPart@1000 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Packaging.MainDocumentPart";
OpenXmlDotNetHelper@1001 : Codeunit 50067;

PROCEDURE SetMainDocumentPart@1(VAR NewMainDocumentPart@1000 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Packaging.MainDocumentPart");
BEGIN
DotNetMainDocumentPart := NewMainDocumentPart;
END;

PROCEDURE GetMainDocumentPart@2(VAR CurrentMainDocumentPart@1000 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Packaging.MainDocumentPart");
BEGIN
CurrentMainDocumentPart := DotNetMainDocumentPart;
END;

[External]
PROCEDURE AddHyperlinkRelationship@3(VAR Uri@1000 : Codeunit 3024;IsExternal@1001 : Boolean;VAR CreatedHyperlinkRelationship@1002 : Codeunit 50034);
VAR
DotNetUri@1003 : DotNet "'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Uri";
DotNetHyperlinkRelationship@1004 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Packaging.HyperlinkRelationship";
BEGIN
Uri.GetUri(DotNetUri);
DotNetHyperlinkRelationship := DotNetMainDocumentPart.AddHyperlinkRelationship(DotNetUri, IsExternal);
CreatedHyperlinkRelationship.SetHyperlinkRelationship(DotNetHyperlinkRelationship);
END;

[External]
PROCEDURE AddNumberingDefinitionsPart@4(VAR CreatedNumberingDefinitionsPart@1000 : Codeunit 50070);
VAR
DotNetNumberingDefinitionsPart@1001 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Packaging.NumberingDefinitionsPart";
DotNetObject@1002 : DotNet "'mscorlib'.System.Object";
BEGIN
//Normally is should have been something as simple as:
//DotNetNumberingDefinitionsPart := DotNetMainDocumentPart.AddNewPart<NumberingDefinitionsPart>();
//But since NAV have no such thing as generics support, I need to fallback to reflection calls:
OpenXmlDotNetHelper.AddPartGeneric(DotNetMainDocumentPart, GETDOTNETTYPE(DotNetNumberingDefinitionsPart), DotNetObject);
CreatedNumberingDefinitionsPart.SetNumberingDefinitionsPart(DotNetObject);
END;

[External]
PROCEDURE NumberingDefinitionsPart@6(VAR WordNumberingDefinitionPart@1000 : Codeunit 50070);
BEGIN
WordNumberingDefinitionPart.SetNumberingDefinitionsPart(DotNetMainDocumentPart.NumberingDefinitionsPart);
END;

[External]
PROCEDURE AddStyleDefinitionsPart@7(VAR CreatedStyleDefinitionsPart@1000 : Codeunit 50041);
VAR
DotNetStyleDefinitionsPart@1001 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Packaging.StyleDefinitionsPart";
DotNetObject@1002 : DotNet "'mscorlib'.System.Object";
BEGIN
//Normally is should have been something as simple as:
//DotNetStyleDefinitionsPart := DotNetMainDocumentPart.AddNewPart<StyleDefinitionsPart>();
//But since NAV have no such thing as generics support, I need to fallback to reflection calls:
OpenXmlDotNetHelper.AddPartGeneric(DotNetMainDocumentPart, GETDOTNETTYPE(DotNetStyleDefinitionsPart), DotNetObject);
CreatedStyleDefinitionsPart.SetStyleDefinitionsPart(DotNetObject);
END;

[External]
PROCEDURE StyleDefinitionsPart@9(VAR WordStyleDefinitionPart@1000 : Codeunit 50041);
BEGIN
WordStyleDefinitionPart.SetStyleDefinitionsPart(DotNetMainDocumentPart.StyleDefinitionsPart);
END;

[External]
PROCEDURE AddImagePart@10(VAR ImagePartType@1000 : Codeunit 50078;VAR CreatedImagePart@1001 : Codeunit 50042);
VAR
DotNetImagePartType@1002 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Packaging.ImagePartType";
DotNetImagePart@1003 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Packaging.ImagePart";
BEGIN
ImagePartType.GetImagePartType(DotNetImagePartType);
DotNetImagePart := DotNetMainDocumentPart.AddImagePart(DotNetImagePartType);
CreatedImagePart.SetImagePart(DotNetImagePart);
END;

[External]
PROCEDURE GetIdOfImagePart@11(VAR ImagePart@1000 : Codeunit 50042) : Text;
VAR
DotNetImagePart@1001 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Packaging.ImagePart";
BEGIN
ImagePart.GetImagePart(DotNetImagePart);
EXIT(DotNetMainDocumentPart.GetIdOfPart(DotNetImagePart));
END;

[External]
PROCEDURE SetDocument@12(VAR WordDocument@1000 : Codeunit 50020);
VAR
DotNetDocument@1001 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Wordprocessing.Document";
BEGIN
WordDocument.GetDocument(DotNetDocument);
DotNetMainDocumentPart.Document := DotNetDocument;
END;

[External]
PROCEDURE Document@13(VAR DotNetWordDocument@1000 : Codeunit 50020);
VAR
DotNetDocument@1001 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Wordprocessing.Document";
BEGIN
DotNetDocument := DotNetMainDocumentPart.Document;
DotNetWordDocument.SetDocument(DotNetDocument);
END;

BEGIN
END.
}
}

76 changes: 76 additions & 0 deletions BaseApp/COD50020.TXT
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
OBJECT Codeunit 50020 DotNet_Word.Document
{
OBJECT-PROPERTIES
{
Date=;
Time=;
Version List=;
}
PROPERTIES
{
OnRun=BEGIN
END;

}
CODE
{
VAR
DotNetDocument@1000 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Wordprocessing.Document";

[External]
PROCEDURE Document@1();
BEGIN
DotNetDocument := DotNetDocument.Document;
END;

[External]
PROCEDURE DocumentFromOuterXml@2(OuterXml@1000 : Text);
BEGIN
DotNetDocument := DotNetDocument.Document(OuterXml);
END;

[External]
PROCEDURE OuterXml@3() : Text;
BEGIN
EXIT(DotNetDocument.OuterXml);
END;

[External]
PROCEDURE InnerText@4() : Text;
BEGIN
EXIT(DotNetDocument.InnerText);
END;

[External]
PROCEDURE SetBody@5(VAR WordBody@1000 : Codeunit 50021);
VAR
DotNetBody@1001 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Wordprocessing.Body";
BEGIN
WordBody.GetBody(DotNetBody);
DotNetDocument.Body := DotNetBody;
END;

[External]
PROCEDURE Body@6(VAR WordBody@1000 : Codeunit 50021);
VAR
DotNetBody@1001 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Wordprocessing.Body";
BEGIN
DotNetBody := DotNetDocument.Body;
WordBody.SetBody(DotNetBody);
END;

PROCEDURE SetDocument@7(VAR NewDocument@1000 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Wordprocessing.Document");
BEGIN
DotNetDocument := NewDocument;
END;

PROCEDURE GetDocument@8(VAR CurrentDocument@1000 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Wordprocessing.Document");
BEGIN
CurrentDocument := DotNetDocument;
END;

BEGIN
END.
}
}

103 changes: 103 additions & 0 deletions BaseApp/COD50021.TXT
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
OBJECT Codeunit 50021 DotNet_Word.Body
{
OBJECT-PROPERTIES
{
Date=;
Time=;
Version List=;
}
PROPERTIES
{
OnRun=BEGIN
END;

}
CODE
{
VAR
DotNetBody@1000 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Wordprocessing.Body";
OpenXmlDotNetHelper@1001 : Codeunit 50067;

[External]
PROCEDURE Body@1();
BEGIN
DotNetBody := DotNetBody.Body;
END;

[External]
PROCEDURE BodyFromOuterXml@2(OuterXml@1000 : Text);
BEGIN
DotNetBody := DotNetBody.Body(OuterXml);
END;

[External]
PROCEDURE OuterXml@3() : Text;
BEGIN
EXIT(DotNetBody.OuterXml);
END;

[External]
PROCEDURE InnerText@4() : Text;
BEGIN
EXIT(DotNetBody.InnerText);
END;

[External]
PROCEDURE AppendParagraph@5(VAR WordParagraph@1000 : Codeunit 50022);
VAR
DotNetParagraph@1001 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Wordprocessing.Paragraph";
BEGIN
WordParagraph.GetParagraph(DotNetParagraph);
//We need this to deal with .NET Generics:
OpenXmlDotNetHelper.AppendGeneric(DotNetBody, DotNetParagraph);
END;

[External]
PROCEDURE AppendTable@6(VAR WordTable@1000 : Codeunit 50027);
VAR
DotNetTable@1001 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Wordprocessing.Table";
BEGIN
WordTable.GetTable(DotNetTable);
//We need this to deal with .NET Generics:
OpenXmlDotNetHelper.AppendGeneric(DotNetBody, DotNetTable);
END;

[External]
PROCEDURE GetTableEnumerator@7(VAR WordTableEnumerator@1000 : Codeunit 50064);
VAR
EnumeratorHelper@1001 : Codeunit 50067;
DotNetTable@1002 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Wordprocessing.Table";
DotNetEnumerator@1003 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Collections.IEnumerator";
BEGIN
//We need this to deal with .NET Generics:
EnumeratorHelper.GetEnumeratorOfTypeGeneric(DotNetBody.Elements, GETDOTNETTYPE(DotNetTable), DotNetEnumerator);
WordTableEnumerator.SetEnumerator(DotNetEnumerator);
END;

[External]
PROCEDURE GetParagraphEnumerator@8(VAR WordParagraphEnumerator@1000 : Codeunit 50062);
VAR
EnumeratorHelper@1001 : Codeunit 50067;
DotNetParagraph@1002 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Wordprocessing.Paragraph";
DotNetEnumerator@1003 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Collections.IEnumerator";
BEGIN
//We need this to deal with .NET Generics:
EnumeratorHelper.GetEnumeratorOfTypeGeneric(DotNetBody.Elements, GETDOTNETTYPE(DotNetParagraph), DotNetEnumerator);
WordParagraphEnumerator.SetEnumerator(DotNetEnumerator);
END;

PROCEDURE SetBody@9(VAR NewDotNetBody@1000 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Wordprocessing.Body");
BEGIN
DotNetBody := NewDotNetBody;
END;

PROCEDURE GetBody@10(VAR CurrentDotNetBody@1000 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Wordprocessing.Body");
BEGIN
CurrentDotNetBody := DotNetBody;
END;

BEGIN
END.
}
}

Loading