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
78 changes: 78 additions & 0 deletions BaseApp/COD50018.TXT
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
OBJECT Codeunit 50018 DotNet_WordprocessingDocument
{
OBJECT-PROPERTIES
{
Date=;
Time=;
Version List=;
}
PROPERTIES
{
OnRun=BEGIN
END;

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

[External]
PROCEDURE Create@17024401(DocumentType@17024401 : 'Document,Template,MacroEnabledDocument,MacroEnabledTemplate';AutoSave@17024403 : Boolean);
niku-live marked this conversation as resolved.
Show resolved Hide resolved
VAR
DotNetWordprocessingDocumentType@17024402 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.WordprocessingDocumentType";
BEGIN
DotNetMemoryStream := DotNetMemoryStream.MemoryStream;
DotNetWordprocessingDocumentType := DotNetWordprocessingDocumentType.Parse(GETDOTNETTYPE(DotNetWordprocessingDocumentType), FORMAT(DocumentType, 0));
DotNetWordprocessingDocument := DotNetWordprocessingDocument.Create(DotNetMemoryStream, DotNetWordprocessingDocumentType, AutoSave);
END;

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

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

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

[External]
PROCEDURE AddMainDocumentPart@17024404(VAR MainDocumentPart@17024400 : Codeunit 50019);
BEGIN
MainDocumentPart.SetMainDocumentPart(DotNetWordprocessingDocument.AddMainDocumentPart);
END;

[External]
PROCEDURE GetMainDocumentPart@17024406(VAR MainDocumentPart@17024400 : Codeunit 50019);
BEGIN
MainDocumentPart.SetMainDocumentPart(DotNetWordprocessingDocument.MainDocumentPart);
END;

PROCEDURE SetWordProcessingDocument@17024400(NewWordprocessingDocument@17024400 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Packaging.WordprocessingDocument");
niku-live marked this conversation as resolved.
Show resolved Hide resolved
BEGIN
DotNetWordprocessingDocument := NewWordprocessingDocument;
END;

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

BEGIN
END.
}
}

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

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

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

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

[External]
PROCEDURE AddHyperlinkRelationship@17024403(Url@17024400 : Text;IsExternal@17024401 : Boolean;VAR CreatedHyperlinkRelationship@17024402 : Codeunit 50034);
VAR
DotNetUri@17024403 : DotNet "'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Uri";
BEGIN
CreatedHyperlinkRelationship.SetHyperlinkRelationship(DotNetMainDocumentPart.AddHyperlinkRelationship(DotNetUri.Uri(Url), IsExternal));
END;

[External]
PROCEDURE AddNumberingDefinitionsPart@17024409(VAR CreatedNumberingDefinitionsPart@17024402 : Codeunit 50070);
VAR
DotNetNumberingDefinitionsPart@17024400 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Packaging.NumberingDefinitionsPart";
DotNetObject@17024405 : 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 HasNumberingDefinitionsPart@17024412() : Boolean;
BEGIN
EXIT(NOT ISNULL(DotNetMainDocumentPart.NumberingDefinitionsPart));
END;

[External]
PROCEDURE GetNumberingDefinitionsPart@17024414(VAR WordNumberingDefinitionPart@17024400 : Codeunit 50070);
BEGIN
WordNumberingDefinitionPart.SetNumberingDefinitionsPart(DotNetMainDocumentPart.NumberingDefinitionsPart);
END;

[External]
PROCEDURE AddStyleDefinitionsPart@17024404(VAR CreatedStyleDefinitionsPart@17024402 : Codeunit 50041);
VAR
DotNetStyleDefinitionsPart@17024400 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Packaging.StyleDefinitionsPart";
DotNetObject@17024405 : 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 HasStyleDefinitionsPart@17024405() : Boolean;
BEGIN
EXIT(NOT ISNULL(DotNetMainDocumentPart.StyleDefinitionsPart));
END;

[External]
PROCEDURE GetStyleDefinitionsPart@17024408(VAR WordStyleDefinitionPart@17024400 : Codeunit 50041);
BEGIN
WordStyleDefinitionPart.SetStyleDefinitionsPart(DotNetMainDocumentPart.StyleDefinitionsPart);
END;

[External]
PROCEDURE AddImagePart@17024406(ImagePartType@17024400 : 'Bmp,Gif,Png,Tiff,Icon,Pcx,Jpeg,Emf,Wmf';VAR CreatedImagePart@17024402 : Codeunit 50042);
VAR
DotNetImagePartType@17024401 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Packaging.ImagePartType";
BEGIN
DotNetImagePartType := DotNetImagePartType.Parse(GETDOTNETTYPE(DotNetImagePartType), FORMAT(ImagePartType, 0));
CreatedImagePart.SetImagePart(DotNetMainDocumentPart.AddImagePart(DotNetImagePartType));
END;

[External]
PROCEDURE GetIdOfImagePart@17024407(VAR ImagePart@17024402 : Codeunit 50042) : Text;
VAR
DotNetImagePart@17024401 : 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@17024401(VAR WordDocument@17024400 : Codeunit 50020);
VAR
DotNetDocument@17024401 : 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 GetDocument@17024402(VAR DotNetWordDocument@17024400 : Codeunit 50020);
BEGIN
DotNetWordDocument.SetDocument(DotNetMainDocumentPart.Document);
END;

BEGIN
END.
}
}

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

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

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

[External]
PROCEDURE CreateFromOuterXml@17024409(OuterXml@17024400 : Text);
BEGIN
DotNetDocument := DotNetDocument.Document(OuterXml);
END;

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

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

[External]
PROCEDURE SetBody@17024401(VAR WordBody@17024400 : Codeunit 50021);
VAR
DotNetBody@17024401 : 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 GetBody@17024403(VAR WordBody@17024400 : Codeunit 50021);
VAR
DotNetBody@17024401 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Wordprocessing.Body";
BEGIN
WordBody.SetBody(DotNetDocument.Body);
END;

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

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

BEGIN
END.
}
}

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

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

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

[External]
PROCEDURE CreateFromOuterXml@17024409(OuterXml@17024400 : Text);
BEGIN
DotNetBody := DotNetBody.Body(OuterXml);
END;

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

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

[External]
PROCEDURE AppendParagraph@17024403(VAR WordParagraph@17024400 : Codeunit 50022);
VAR
DotNetParagraph@17024401 : 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@17024402(VAR WordTable@17024400 : Codeunit 50027);
VAR
DotNetTable@17024401 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Wordprocessing.Table";
DotNetArray@17024402 : DotNet "'mscorlib'.System.Array";
BEGIN
WordTable.GetTable(DotNetTable);
//We need this to deal with .NET Generics:
OpenXmlDotNetHelper.AppendGeneric(DotNetBody, DotNetTable);
END;

[External]
PROCEDURE GetTableEnumerator@17024404(VAR WordTableEnumerator@17024400 : Codeunit 50064);
VAR
EnumeratorHelper@17024401 : Codeunit 50067;
DotNetTable@17024402 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Wordprocessing.Table";
DotNetEnumerator@17024403 : 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@17024408(VAR WordParagraphEnumerator@17024400 : Codeunit 50062);
VAR
EnumeratorHelper@17024401 : Codeunit 50067;
DotNetParagraph@17024402 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Wordprocessing.Paragraph";
DotNetEnumerator@17024403 : 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@17024411(NewDotNetBody@17024400 : DotNet "'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.DocumentFormat.OpenXml.Wordprocessing.Body");
BEGIN
DotNetBody := NewDotNetBody;
END;

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

BEGIN
END.
}
}

Loading