Releases: EvotecIT/OfficeIMO
Releases · EvotecIT/OfficeIMO
v0.20.0
What's Changed
- Add converter from DOTX to DOCX by @PrzemyslawKlys in #257
Full Changelog: v0.19.0...v0.20.0
v0.19.0 *BREAKING CHANGES*
What's Changed
- Improve watermark (add watermark image) by @PrzemyslawKlys in #220
- Migrate to 3.1.0 OpenXMLSDK by @PrzemyslawKlys in #253 - due to underlying changes some code may require changes
Full Changelog: v0.18.0...v0.19.0
v0.18.0
What's Changed
- Added WordParagraphStyles.Custom by @ChrisBellBO in #237
- Bump SixLabors.ImageSharp to 2.1.9 by @PrzemyslawKlys in #247
- Copy/Clone row after the current row by @startewho in #226
- Adds compatibility of created documents with OpenOffice/LibreOffice by @PrzemyslawKlys in #191
- Added basic Elements/ElementsByType property and few other improvements by @ChrisBellBO in #240
- Fix tests after adding OpenOffice compatibility and add missing NET 8 tests for macOs by @PrzemyslawKlys in #248
- Fix test to ignore temporary word documents by @PrzemyslawKlys in #249
- Bump OpenXMLSDK to 2.20 by @PrzemyslawKlys in #250
- Add docs, fix typos and removes requirement to set relative width/hei… by @PrzemyslawKlys in #251
- Remove obsolete stuff by @PrzemyslawKlys in #252
New Contributors
- @ChrisBellBO made their first contribution in #237
Full Changelog: v0.17.0...v0.18.0
v0.17.0
What's Changed
- Fixes wrong implementation of repeat header by @PrzemyslawKlys in #234
Full Changelog: v0.16.0...v0.17.0
v0.16.0
What's Changed
- Add RepeatHeaderRowAtTheTopOfEachPage to Tables by @PrzemyslawKlys in #231
- Add AddEmbeddedFragment method by @PrzemyslawKlys in #233
- Bump test dependencies by @PrzemyslawKlys in #232
Full Changelog: v0.15.0...v0.16.0
v0.15.0
What's Changed
- Bump dependency of ImageSharp to 2.1.8 by @PrzemyslawKlys in #221
- Filled in documentation for the public paragraph methods. by @tmheath in #212
- Improve textboxes to allow multiple Runs/Paragraphs Breaking Changes by @PrzemyslawKlys in #225
- Improve Charts Breaking Changes by @PrzemyslawKlys in #223
- Add VerifyTests by @rstm-sf in #86
Full Changelog: v0.14.0...v0.15.0
v0.14.0
What's Changed
- Add centimeters conversions to Margins, fix naming emus/twips by @PrzemyslawKlys in #200
- Fixes lists NSID value which prevents lists using correct settings when using same type multiple times by @PrzemyslawKlys in #202
- Add 4 more list types with letters by @PrzemyslawKlys in #209
- Breaking Change - Remove continue & restart numbering from Lists by @PrzemyslawKlys in #205
- Add Remove & Merge Lists by @PrzemyslawKlys in #207
Full Changelog: v0.13.0...v0.14.0
v0.13.0
What's Changed
- Add basic method to add textbox to header/footer by @PrzemyslawKlys in #187
- [WordTextBox] Add additional features by @TopperDEL in #188
- Use Paragraph instead of StdBlock (so that text within a TextBox is no "variable" anymore)
- Allow changing the insets of the TextBox so that there is no gap between the text of the TextBox and its border
- Allow the TextBox to be set to "AutoFitText" or not
- Allow the text to be multiline by respecting the page breaks
- Added Wrapping functionality including inline
- Added ability to convert inline to other wrapping types and vice versa (keep in mind that some properties are lost then or go to their defaults)
- Fixes wrong paragraph being returned when AddImage is used
- Breaking Change Changes WrapTextImage.InFrontText to WrapTextImage.InFrontOfText to match Word naming
- Improve WordTextBox functionality by @PrzemyslawKlys in #197
- Add support for Net8 by @PrzemyslawKlys in #198
- Fixes some warnings as reported by Visual Studio by @PrzemyslawKlys in #199
- Added the ability to clear the default empty paragraph in TableCell. by @tmheath in #182
New Contributors
- @TopperDEL made their first contribution in #188
Full Changelog: v0.12.0...v0.13.0
v0.12.0
What's Changed
- Add descriptions to AddImage parameters to documentation by @tmheath in #175
- Add ability to add TextBox to Word Document (new class WordTextBox) by @PrzemyslawKlys in #180
- BREAKING CHANGE Improve Watermark with colors, rotation and other settings by @PrzemyslawKlys in #181
- Word table cell paragraph add image fix by @tmheath in #176
- Add support for WriteProtection (Always Read Only) and MarkAsFinal settings by @PrzemyslawKlys in #163
New Contributors
More details. This change adds:
- Ability to modify watermark (colors, text, rotation, width, height)
- Ability to remove watermark
- Ability to find watermarks in document, sections, headers
- Ability to add watermark to document/section which makes watermark show up only on single page
- Ability to add watermark to headers/footers which makes watermark show up on whole section
Breaking changes
- This change breaks how watermarks are added. If you add them directly within section/document it will only apply to single page/pages as the SdtBlock gets added to body directly. If you need watermark for the whole section/document you need to add watermark to header/footer for it to apply to given section.
This example shows per section in header:
public static void Watermark_Sample1(string folderPath, bool openWord) {
Console.WriteLine("[*] Creating standard document with Watermark 2");
string filePath = System.IO.Path.Combine(folderPath, "Basic Document with Watermark 4.docx");
using (WordDocument document = WordDocument.Create(filePath)) {
document.AddParagraph("Section 0");
document.AddHeadersAndFooters();
document.Sections[0].Header.Default.AddParagraph("Section 0 - In header");
document.Sections[0].SetMargins(WordMargin.Normal);
Console.WriteLine(document.Sections[0].Margins.Left.Value);
Console.WriteLine(document.Sections[0].Margins.Right.Value);
Console.WriteLine(document.Sections[0].Margins.Type);
document.Sections[0].Margins.Type = WordMargin.Wide;
Console.WriteLine(document.Sections[0].Margins.Type);
Console.WriteLine("----");
var watermark = document.Sections[0].Header.Default.AddWatermark(WordWatermarkStyle.Text, "Watermark");
watermark.Color = Color.Red;
// ColorHex normally returns hex colors, but for watermark it returns string as the underlying value is in string name, not hex
Console.WriteLine(watermark.ColorHex);
Console.WriteLine(watermark.Rotation);
watermark.Rotation = 180;
Console.WriteLine(watermark.Rotation);
watermark.Stroked = true;
Console.WriteLine(watermark.Height);
Console.WriteLine(watermark.Width);
// width and height in points (HTML wise)
watermark.Height = 100.15;
watermark.Width = 500.18;
document.AddPageBreak();
document.AddPageBreak();
document.AddSection();
document.AddParagraph("Section 1");
document.Sections[1].AddHeadersAndFooters();
document.Sections[1].Header.Default.AddParagraph("Section 1 - In header");
document.Sections[1].Margins.Type = WordMargin.Narrow;
Console.WriteLine("----");
Console.WriteLine("Section 0 - Paragraphs Count: " + document.Sections[0].Header.Default.Paragraphs.Count);
Console.WriteLine("Section 1 - Paragraphs Count: " + document.Sections[1].Header.Default.Paragraphs.Count);
Console.WriteLine("----");
document.Sections[1].AddParagraph("Test");
document.Sections[1].Header.Default.AddWatermark(WordWatermarkStyle.Text, "Draft");
Console.WriteLine(document.Sections[0].Margins.Left.Value);
Console.WriteLine(document.Sections[0].Margins.Right.Value);
Console.WriteLine(document.Sections[1].Margins.Left.Value);
Console.WriteLine(document.Sections[1].Margins.Right.Value);
Console.WriteLine(document.Sections[1].Margins.Type);
document.Settings.SetBackgroundColor(Color.Azure);
Console.WriteLine("----");
Console.WriteLine("Watermarks in default header: " + document.Header.Default.Watermarks.Count);
Console.WriteLine("Watermarks in default footer: " + document.Footer.Default.Watermarks.Count);
Console.WriteLine("Watermarks in section 0: " + document.Sections[0].Watermarks.Count);
Console.WriteLine("Watermarks in section 0 (header): " + document.Sections[0].Header.Default.Watermarks.Count);
Console.WriteLine("Paragraphs in section 0 (header): " + document.Sections[0].Header.Default.Paragraphs.Count);
Console.WriteLine("Watermarks in section 1: " + document.Sections[1].Watermarks.Count);
Console.WriteLine("Watermarks in section 1 (header): " + document.Sections[1].Header.Default.Watermarks.Count);
Console.WriteLine("Paragraphs in section 1 (header): " + document.Sections[1].Header.Default.Paragraphs.Count);
Console.WriteLine("Watermarks in document: " + document.Watermarks.Count);
document.Save(false);
}
using (WordDocument document = WordDocument.Load(filePath)) {
//Console.WriteLine("----");
//Console.WriteLine("Watermarks in default header: " + document.Header.Default.Watermarks.Count);
//Console.WriteLine("Watermarks in default footer: " + document.Footer.Default.Watermarks.Count);
//Console.WriteLine("Watermarks in section 0: " + document.Sections[0].Watermarks.Count);
//Console.WriteLine("Watermarks in section 0 (header): " + document.Sections[0].Header.Default.Watermarks.Count);
//Console.WriteLine("Paragraphs in section 0 (header): " + document.Sections[0].Header.Default.Paragraphs.Count);
//Console.WriteLine("Watermarks in section 1: " + document.Sections[1].Watermarks.Count);
//Console.WriteLine("Paragraphs in section 1 (header): " + document.Sections[1].Header.Default.Paragraphs.Count);
//Console.WriteLine("Watermarks in document: " + document.Watermarks.Count);
document.Save(openWord);
}
}
This example shows per page:
public static void Watermark_Sample3(string folderPath, bool openWord) {
Console.WriteLine("[*] Creating standard document with watermark");
string filePath = System.IO.Path.Combine(folderPath, "Basic Document with watermark and sections.docx");
using (WordDocument document = WordDocument.Create(filePath)) {
document.AddParagraph("Section 0");
document.Sections[0].AddWatermark(WordWatermarkStyle.Text, "Confidential");
document.AddPageBreak();
document.AddPageBreak();
var section = document.AddSection();
section.AddWatermark(WordWatermarkStyle.Text, "Second Mark");
document.AddParagraph("Section 1");
document.AddPageBreak();
document.AddPageBreak();
var section1 = document.AddSection();
document.AddParagraph("Section 2");
document.Sections[2].AddWatermark(WordWatermarkStyle.Text, "New");
document.AddPageBreak();
document.AddPageBreak();
Console.WriteLine("----");
Console.WriteLine("Watermarks: " + document.Watermarks.Count);
Console.WriteLine("Watermarks section 0: " + document.Sections[0].Watermarks.Count);
Console.WriteLine("Watermarks section 1: " + document.Sections[1].Watermarks.Count);
Console.WriteLine("Watermarks section 2: " + document.Sections[2].Watermarks.Count);
Console.WriteLine("Paragraphs: " + document.Paragraphs.Count);
Console.WriteLine("Removing last watermark");
document.Sections[2].Watermarks[0].Remove();
Console.WriteLine("Watermarks: " + document.Watermarks.Count);
Console.WriteLine("Watermarks section 0: " + document.Sections[0].Watermarks.Count);
Console.WriteLine("Watermarks section 1: " + document.Sections[1].Watermarks.Count);
Console.WriteLine("Watermarks section 2: " + document.Sections[2].Watermarks.Count);
Console.WriteLine("Paragraphs: " + document.Paragraphs.Count);
document.Save(openWord);
}
}
- Adds WordBordersParagraph type and allows setting borders for paragraphs
- Adds ability to add TextBox
internal static void Example_AddingTextbox2(string folderPath, bool openWord) {
Console.WriteLine("[*] Creating standard document with some textbox");
var filePath = System.IO.Path.Combine(folderPath, "BasicDocumentWithTextBox3.docx");
using (WordDocument document = WordDocument.Create(filePath)) {
var paragraph = document.AddParagraph("Adding paragraph with some text");
var textBox = document.AddTextBox("My textbox on the left");
textBox.HorizontalPositionRelativeFrom = HorizontalRelativePositionValues.Page;
// horizontal alignment overwrites the horizontal position offset so only one will work
textBox.HorizontalAlignment = HorizontalAlignmentValues.Left;
textBox.VerticalPositionOffsetCentimeters = 3;
var textBox2 = document.AddTextBox("My textbox on the right");
textBox2.HorizontalPositionRelativeFrom = HorizontalRelativePositionValues.Page;
textBox2.WordParagraph.ParagraphAlignment = JustificationValues.Right;
// horizontal alignment overwrites the horizontal position offset so only one will work
textBox2.HorizontalAlignment = HorizontalAlignmentValues.Right;
textBox2.Ve...
v0.11.0
What's Changed
- FindAndReplace allowed for specific paragraphs by @startewho in #171
Full Changelog: v0.10.0...v0.11.0