Aspose.Words for Java 17.12 Release Notes

Major Features

There are 91 improvements and fixes in this regular monthly release. The most notable are:

  • PixelFormat property in ImageSaveOptions class.
  • Metered License upgraded to REST API 1.2.
  • Fixed few Veracode issues reported by user.
  • Implemented API to set chart axis properties.
  • Added feature to get the docPartGallery value of StructuredDocumentTag of type SdtType.DocPartObj.
  • Horizontal and vertical flipping attributes are now taken into account when rendering DML textboxes.
  • Improved rendering of diacritics for “Courier New” font.
  • Multiline MathML expressions rendering fixed.
  • EMR_ROUNDRECT records processing while rendering metafiles fixed.
  • PDF Rendering of indexed images while converting to CMYK color space fixed.
  • OTF(CFF) fonts to PDF/A documents export fixed.
  • DML Charts with empty area do not throw exception on rendering now.
  • Fixed scaling problem with DML bubble charts on rendering.
  • LINQ Reporting Engine supports dynamic setting of chart axes’ titles.
  • Improved handling of decimal tab alignment in cells when paragraph has hanging indent.
  • Improved text wrapping when line contains single or no characters.
  • Improved handling of cell margins and table alignment.
  • Improved cell alignment when line has trailing spaces and custom tabs.
  • Improved handling of collapsed paragraphs.
  • Fixed exception in rare case when line break point cannot be found.
  • Fixed exception when document is saved with revision balloons inside of a cell.

Full List of Issues Covering all Changes in this Release

Key Summary Category
WORDSJAVA-1669 Implement PixelFormat property in ImageSaveOptions class in Aspose.Words for Java New Feature
WORDSJAVA-1707 Metered License code upgraded to REST API 1.2. Enhancement
WORDSJAVA-1675 Veracode issue: “Improper Resource Shutdown or Release” Bug
WORDSJAVA-1682 Merging of Generic and CJK spans leads to bold text. Bug
WORDSJAVA-1690 WarningCallback doesn’t raise Warning on certain invalid XML content. Bug
WORDSJAVA-1667 Exception when saving a file with drawing to PDF format Exception
WORDSJAVA-1698 Exception in aspose.words - Keyframe positions must be increasing: 1.0 Exception
WORDSNET-10287 Check on summer 2015 // Doc to tiff conversion issue with text rendering issue Bug
WORDSNET-10496 Merged cells are lost after when UpdateTableLayout method is called Bug
WORDSNET-10648 /rounding/ Blank page is created after conversion from Docx to Pdf Bug
WORDSNET-10673 TestCmykImageDefectJ21 is rendered to PDF incorrectly when ShowAllFormattingMarks are set to true Bug
WORDSNET-12173 /text wrap/ Text moves after converting Word to PDF Bug
WORDSNET-14035 /delete revisions balloons/ Failed to render revisions balloons when the last table row is deleted Bug
WORDSNET-14194 Aspose Word hang when processing HTML Bug
WORDSNET-14811 RTF to PDF, Issues with margins/indents Bug
WORDSNET-15113 Image Rendering Issue Bug
WORDSNET-15382 Document.UpdateFields does not stop (endless loop) Bug
WORDSNET-15578 Chart get blurry when convert word to html Bug
WORDSNET-15610 Borders specified for “colgroup” element are not applied to cell Bug
WORDSNET-15796 RTF: Background image is lost for textboxes inlined with text Bug
WORDSNET-15895 /Courier New + diacritics with non-zero advance/ Russian text accent rendering issue in resultant PDF Bug
WORDSNET-15896 /Courier New + diacritics with non-zero advance/ Herbew text accent rendering issue in resultant PDF Bug
WORDSNET-15909 Page number shifted to right in DOCX to PDF conversion Bug
WORDSNET-15954 XmlMapping.SetMapping throws System.InvalidOperationException Bug
WORDSNET-15979 DOCX to DOCX conversion issue with font of pie chart title Bug
WORDSNET-15986 Footnote formatting is changed after joining RTF documents Bug
WORDSNET-15994 /revisions/ List rendering issue in PDF document Bug
WORDSNET-16025 DOCX to PDF rendering truncate the footer shape Bug
WORDSNET-16026 Tables are not properly aligned in pdf output Bug
WORDSNET-16028 Empty Area Chart. Exception is thrown when converting to PDF . Bug
WORDSNET-16030 Cell’s top border is lost after using Borders.Top Bug
WORDSNET-16043 ImageSaveOptions.PageIndex is ignored when IPageSavingCallback is implements Bug
WORDSNET-16046 System.ArgumentNullException when converting specific file Bug
WORDSNET-16053 Symbol Field Color in Footer is lost in PDF conversion Bug
WORDSNET-16061 Save as PDF Compliance PDF/A incorrectly includes OpenType Font Bug
WORDSNET-16067 Incorrect inserting ole object as “htmlfile” Bug
WORDSNET-16075 An exception raises when loading HTML document. Bug
WORDSNET-16079 Position of cell’s text is changed in output PDF Bug
WORDSNET-16081 Text is rendered on next page in output PDF Bug
WORDSNET-16082 Extra empty space is rendered in table’s cell Bug
WORDSNET-16085 Word shows “Unknown” filename in Rename Package dialog. Bug
WORDSNET-16090 Document.Save hangs while saving DOCX to PDF Bug
WORDSNET-16095 RTF is corrupted after re-saving it Bug
WORDSNET-16096 PNG image is not rendered in output PDF when PdfImageColorSpaceExportMode.SimpleCmyk is used Bug
WORDSNET-16097 DOCX to PDF conversion issue with image rendering Bug
WORDSNET-16118 Adding additional margin to the table cell when producing PDF output. Bug
WORDSNET-16128 Math equation displaced in rendered PDF document Bug
WORDSNET-16147 DOCX is corrupted after re-saving it Bug
WORDSNET-6091 The line numbers have the incorrect size while saving in PDF format. Bug
WORDSNET-6975 Doc to PDF conversion issue with Shape’s contents Bug
WORDSNET-9681 Paragraphs render on the previous page in Pdf Bug
WORDSNET-9682 Text direction in SmartArt layout box for arrows is not preserved in Pdf Bug
WORDSNET-10031 Extra empty space appear after conversion from Docx to Pdf Enhancement
WORDSNET-10348 Document.UpdateFields does not update the AUTOTEXT Enhancement
WORDSNET-12932 Content shifts down to the pages in PDF Enhancement
WORDSNET-13334 Empty page is created after section break in output Pdf Enhancement
WORDSNET-14485 Identify elements close to page boarder. Enhancement
WORDSNET-15148 Transparent images are lost in output Pdf Enhancement
WORDSNET-15384 Text is shifted down to the page in output PDF Enhancement
WORDSNET-15479 Wrong empty formula appears in document after accepting revisions Enhancement
WORDSNET-15491 Shape’s position is changed in output PDF Enhancement
WORDSNET-15599 DOCX to PDF, table on page moved down Enhancement
WORDSNET-15690 Contents are pushed down to the page in output PDF Enhancement
WORDSNET-15691 Table’s position is changed after conversion from Docx to Pdf Enhancement
WORDSNET-15818 Simplified font is used instead of Traditional in Chinese (Taiwan) document Enhancement
WORDSNET-16066 Rtf’s text font is changed Enhancement
WORDSNET-16080 Position of numbers in cell is changed after conversion from DOCX to PDF Enhancement
WORDSNET-16088 Expose switches in MailMerge Field Enhancement
WORDSNET-16149 Add exception when TableEnd field is missing Enhancement
WORDSNET-16164 Add support for svgBlip drawing extension. Enhancement
WORDSNET-15785 /delete revisions balloons/ Exception occurs on saving document with showing revision balloons if it has revision in table Exception
WORDSNET-15870 Document.Save throws System.NullReferenceException while re-saving RTF Exception
WORDSNET-15923 DocumentBuilder.InsertChart throws System.NullReferenceException Exception
WORDSNET-15968 System.NullReferenceException is thrown while saving DOCX to PDF Exception
WORDSNET-16045 Infinite loop detected error during DOCX to TIFF image rendering Exception
WORDSNET-16071 Aspose.Words.FileCorruptedException is thrown while loading DOC Exception
WORDSNET-16084 An exception raises while comparing documents. Exception
WORDSNET-16124 API throws FileCorruptedException upon loading RTF file Exception
WORDSNET-16134 System.NullReferenceException is thrown while saving DOCX to PDF Exception
WORDSNET-16157 System.NullReferenceException occurs when exporting RTF to PDF Exception
WORDSNET-13512 Add feature to Format X/Y/Z Axis of chart. Feature
WORDSNET-14022 Add feature to format axis numbers of chart Feature
WORDSNET-14247 Add feature to format axis (minimum and maximum bounds) Feature
WORDSNET-15164 Add feature to set Axis Title of Chart using LINQ Reporting Feature
WORDSNET-15520 Adding the chart axis label formatting. Feature
WORDSNET-15791 Add feature to set/get “Specify interval unit” of axis label Feature
WORDSNET-15925 Add feature to Format Axis Number Feature
WORDSNET-15972 Add feature to get the docPartGallery value of StructuredDocumentTag of type SdtType.DocPartObj Feature
WORDSNET-13612 Implement Aspose.Words for .NET Core Feature
WORDSNETSTD-1 Add feature to support Aspose.Words for .NET Core 2.0 Feature
WORDSNET-16127 Different behavior of Section New Page Break in 16.7 and 17.11 Regression

Public API and Backward Incompatible Changes

This section lists public API changes that were introduced in Aspose.Words 17.12. It includes not only new and obsoleted public methods, but also a description of any changes in the behavior behind the scenes in Aspose. Words which may affect existing code. Any behavior introduced that could be seen as a regression and modifies existing behavior is especially important and is documented here.

Implemented API to Set Chart Axis Properties

Related issue WORDSNET-13512.

The following public classes and enumeration types are added to allow setting chart axis properties:

/// <summary>
/// Represents the axis options of the chart.
/// </summary>
public class ChartAxis
{
    /// <summary>
    /// Returns type of the axis.
    /// </summary>
    public ChartAxisType Type { get; }
    /// <summary>
    /// Gets or sets type of the category axis.
    /// </summary>
    /// <remarks>
    /// Only text categories (AxisCategoryType.Category) are allowed in MS Office 2016 new charts.
    /// </remarks>
    public AxisCategoryType CategoryType { get; set; }
    /// <summary>
    /// Specifies how this axis crosses the perpendicular axis.
    /// </summary>
    /// <remarks>
    /// Default value is AxisCrosses.Automatic.
    /// The property is not supported by MS Office 2016 new charts.
    /// </remarks>
    public AxisCrosses Crosses { get; set; }
    /// <summary>
    /// Specifies where on the perpendicular axis the axis crosses.
    /// </summary>
    /// <remarks>
    /// The property has effect only if "Crosses" are set to AxisCrosses.Custom. It is not supported by MS Office 2016 new charts.
    /// The units are determined by the type of axis. When the axis is a value axis, the value of the property is a decimal number on
    /// the value axis. When the axis is a time category axis, the value is defined as an integer number of days relative to the base
    /// date (30/12/1899). For a text category axis, the value is an integer category number, starting with 1 as the first category.
    /// </remarks>
    public double CrossesAt { get; set; }
    /// <summary>
    /// Returns or sets a flag indicating whether values of axis should be displayed in reverse order, i.e. from max to min.
    /// </summary>
    /// <remarks>
    /// The property is not supported by MS Office 2016 new charts. Default value is false.
    /// </remarks>
    public bool ReverseOrder { get; set; }
    /// <summary>
    /// Returns or sets the major tick marks.
    /// </summary>
    public AxisTickMark MajorTickMark { get; set; }
    /// <summary>
    /// Returns or sets the minor tick marks for the axis.
    /// </summary>
    public AxisTickMark MinorTickMark { get; set; }
    /// <summary>
    /// Returns or sets the position of the tick labels on the axis.
    /// </summary>
    /// <remarks>
    /// The property is not supported by MS Office 2016 new charts.
    /// </remarks>
    public AxisTickLabelPosition TickLabelPosition { get; set; }
    /// <summary>
    /// Returns or sets the distance between major tick marks.
    /// </summary>
    /// <remarks>
    /// Valid range of a value is greater than zero. The property has effect for time category and value axes.
    /// Setting this property sets the MajorUnitIsAuto property to false.
    /// </remarks>
    public double MajorUnit { get; set; }
    /// <summary>
    /// Gets or sets a flag indicating whether default distance between major tick marks shall be used.
    /// </summary>
    /// <remarks>
    /// The property has effect for time category and value axes.
    /// </remarks>
    public bool MajorUnitIsAuto { get; set; }
    /// <summary>
    /// Returns or sets the scale value for major tick marks on the time category axis.
    /// </summary>
    /// <remarks>
    /// The property has effect only for time category axes.
    /// </remarks>
    public AxisTimeUnit MajorUnitScale { get; set; }
    /// <summary>
    /// Returns or sets the distance between minor tick marks.
    /// </summary>
    /// <remarks>
    /// Valid range of a value is greater than zero. The property has effect for time category and value axes.
    /// Setting this property sets the MinorUnitIsAuto property to false.
    /// </remarks>
    public double MinorUnit { get; set; }
    /// <summary>
    /// Gets or sets a flag indicating whether default distance between minor tick marks shall be used.
    /// </summary>
    /// <remarks>
    /// The property has effect for time category and value axes.
    /// </remarks>
    public bool MinorUnitIsAuto { get; set; }
    /// <summary>
    /// Returns or sets the scale value for minor tick marks on the time category axis.
    /// </summary>
    /// <remarks>
    /// The property has effect only for time category axes.
    /// </remarks>
    public AxisTimeUnit MinorUnitScale { get; set; }
    /// <summary>
    /// Returns or sets the smallest time unit that is represented on the time category axis.
    /// </summary>
    /// <remarks>
    /// The property has effect only for time category axes.
    /// </remarks>
    public AxisTimeUnit BaseTimeUnit { get; set; }
    /// <summary>
    /// Returns a ChartNumberFormat object that allows defining number formats for the axis.
    /// </summary>
    public ChartNumberFormat NumberFormat { get; }
    /// <summary>
    /// Gets or sets the distance of labels from the axis.
    /// </summary>
    /// <remarks>
    /// The property represents a percentage of the default label offset.
    /// Valid range is from 0 to 1000 percent inclusive. Default value is 100%.
    /// The property has effect only for category axes. It is not supported by MS Office 2016 new charts.
    /// </remarks>
    public int TickLabelOffset { get; set; }
    /// <summary>
    /// Specifies the scaling value of the display units for the value axis.
    /// </summary>
    /// <remarks>
    /// The property has effect only for value axes.
    /// </remarks>
    public AxisDisplayUnit DisplayUnit { get; }
    /// <summary>
    /// Gets or sets a flag indicating whether the value axis crosses the category axis between categories.
    /// </summary>
    /// <remarks>
    /// The property has effect only for value axes. It is not supported by MS Office 2016 new charts.
    /// </remarks>
    public bool AxisBetweenCategories { get; set; }
    /// <summary>
    /// Provides access to the scaling options of the axis.
    /// </summary>
    public AxisScaling Scaling { get; }
    /// <summary>
    /// Gets or sets the interval, at which tick labels are drawn.
    /// </summary>
    /// <remarks>
    /// The property has effect for text category and series axes. It is not supported by MS Office 2016 new charts.
    /// Valid range of a value is greater than or equal to 1.
    /// Setting this property sets the TickLabelSpacingIsAuto property to false.
    /// </remarks>
    public int TickLabelSpacing { get; set; }
    /// <summary>
    /// Gets or sets a flag indicating whether automatic interval of drawing tick labels shall be used.
    /// </summary>
    /// <remarks>
    /// Default value is true.
    /// The property has effect for text category and series axes. It is not supported by MS Office 2016 new charts.
    /// </remarks>
    public bool TickLabelSpacingIsAuto { get; set; }
    /// <summary>
    /// Gets or sets the interval, at which tick marks are drawn.
    /// </summary>
    /// <remarks>
    /// The property has effect for text category and series axes. It is not supported by MS Office 2016 new charts.
    /// Valid range of a value is greater than or equal to 1.
    /// </remarks>
    public int TickMarkSpacing { get; set; }
}
/// <summary>
/// Specifies type of chart axis.
/// </summary>
public enum ChartAxisType
{
    /// <summary>
    /// Category axis of a chart.
    /// </summary>
    Category,
    /// <summary>
    /// Series axis of a chart.
    /// </summary>
    Series,
    /// <summary>
    /// Value axis of a chart.
    /// </summary>
    Value
}
/// <summary>
/// Specifies type of a category axis.
/// </summary>
public enum AxisCategoryType
{
    /// <summary>
    /// Specifies that type of a category axis is determined automatically based on data.
    /// </summary>
    Automatic,
    /// <summary>
    /// Specifies an axis of an arbitrary set of categories.
    /// </summary>
    Category,
    /// <summary>
    /// Specifies a time category axis.
    /// </summary>
    Time
}
/// <summary>
/// Specifies the possible crossing points for an axis.
/// </summary>
public enum AxisCrosses
{
    /// <summary>
    /// The category axis crosses at the zero point of the value axis (if possible), or at the minimum value
    /// if the minimum is greater than zero, or at the maximum if the maximum is less than zero.
    /// </summary>
    Automatic,
    /// <summary>
    /// A perpendicular axis crosses at the maximum value of the axis.
    /// </summary>
    Maximum,
    /// <summary>
    /// A perpendicular axis crosses at the minimum value of the axis.
    /// </summary>
    Minimum,
    /// <summary>
    /// A perpendicular axis crosses at the specified value of the axis.
    /// </summary>
    Custom
}
/// <summary>
/// Specifies the possible positions for tick marks.
/// </summary>
public enum AxisTickMark
{
    /// <summary>
    /// Specifies that the tick marks shall cross the axis.
    /// </summary>
    Cross,
    /// <summary>
    /// Specifies that the tick marks shall be inside the plot area.
    /// </summary>
    Inside,
    /// <summary>
    /// Specifies that the tick marks shall be outside the plot area.
    /// </summary>
    Outside,
    /// <summary>
    /// Specifies that there shall be no tick marks.
    /// </summary>
    None
}
/// <summary>
/// Specifies the possible positions for tick labels.
/// </summary>
public enum AxisTickLabelPosition
{
    /// <summary>
    /// Specifies the axis labels shall be at the high end of the perpendicular axis.
    /// </summary>
    High,
    /// <summary>
    /// Specifies the axis labels shall be at the low end of the perpendicular axis.
    /// </summary>
    Low,
    /// <summary>
    /// Specifies the axis labels shall be next to the axis.
    /// </summary>
    NextToAxis,
    /// <summary>
    /// Specifies the axis labels are not drawn.
    /// </summary>
    None,
    /// <summary>
    /// Specifies default value of tick labels position.
    /// </summary>
    Default = NextToAxis
}
/// <summary>
/// Specifies the unit of time for axes.
/// </summary>
public enum AxisTimeUnit
{
    /// <summary>
    /// Specifies that unit was not set explicitly and default value should be used.
    /// </summary>
    Automatic,
    /// <summary>
    /// Specifies that the chart data shall be shown in days.
    /// </summary>
    Days,
    /// <summary>
    /// Specifies that the chart data shall be shown in months.
    /// </summary>
    Months,
    /// <summary>
    /// Specifies that the chart data shall be shown in years.
    /// </summary>
    Years
}
/// <summary>
/// Provides access to the scaling options of the display units for the value axis.
/// </summary>
public class AxisDisplayUnit
{
    /// <summary>
    /// Gets or sets the scaling value of the display units as one of the predefined values.
    /// </summary>
    /// <remarks>
    /// Default value is AxisBuiltInUnit.None. The AxisBuiltInUnit.Custom and AxisBuiltInUnit.Percentage values are not available
    /// in some chart types; see AxisBuiltInUnit for more information.
    /// </remarks>
    public AxisBuiltInUnit Unit { get; set; }
    /// <summary>
    /// Gets or sets a user-defined divisor to scale display units on the value axis.
    /// </summary>
    /// <remarks>
    /// The property is not supported by MS Office 2016 new charts. Default value is 1.
    /// Setting this property sets the Unit property to AxisBuiltInUnit.Custom.
    /// </remarks>
    public double CustomUnit { get; set; }
}
/// <summary>
/// Specifies the display units for an axis.
/// </summary>
public enum AxisBuiltInUnit
{
    /// <summary>
    /// Specifies the values on the chart shall displayed as is.
    /// </summary>
    None,
    /// <summary>
    /// Specifies the values on the chart shall be divided by a user-defined divisor. This value is not supported
    /// by the new chart types of MS Office 2016.
    /// </summary>
    Custom,
    /// <summary>
    /// Specifies the values on the chart shall be divided by 1,000,000,000.
    /// </summary>
    Billions,
    /// <summary>
    /// Specifies the values on the chart shall be divided by 100,000,000.
    /// </summary>
    HundredMillions,
    /// <summary>
    /// Specifies the values on the chart shall be divided by 100.
    /// </summary>
    Hundreds,
    /// <summary>
    /// Specifies the values on the chart shall be divided by 100,000.
    /// </summary>
    HundredThousands,
    /// <summary>
    /// Specifies the values on the chart shall be divided by 1,000,000.
    /// </summary>
    Millions,
    /// <summary>
    /// Specifies the values on the chart shall be divided by 10,000,000.
    /// </summary>
    TenMillions,
    /// <summary>
    /// Specifies the values on the chart shall be divided by 10,000.
    /// </summary>
    TenThousands,
    /// <summary>
    /// Specifies the values on the chart shall be divided by 1,000.
    /// </summary>
    Thousands,
    /// <summary>
    /// Specifies the values on the chart shall be divided by 1,000,000,000,0000.
    /// </summary>
    Trillions,
    /// <summary>
    /// Specifies the values on the chart shall be divided by 0.01. This value is supported only by the new chart types of MS Office 2016.
    /// </summary>
    Percentage
}
/// <summary>
/// Represents the scaling options of the axis.
/// </summary>
public class AxisScaling
{
    /// <summary>
    /// Gets or sets scaling type of the axis.
    /// </summary>
    /// <remarks>
    /// The AxisScaleType.Linear value is the only that is allowed in MS Office 2016 new charts.
    /// </remarks>
    public AxisScaleType Type { get; set; }
    /// <summary>
    /// Gets or sets the logarithmic base for a logarithmic axis.
    /// </summary>
    /// <remarks>
    /// The property is not supported by MS Office 2016 new charts.
    /// Valid range of a floating point value is greater than or equal to 2 and less than or equal to 1000. The property has effect only
    /// if "Type" is set to AxisScaleType.Logarithmic.
    /// Setting this property sets the Type property to AxisScaleType.Logarithmic.
    /// </remarks>
    public double LogBase { get; set; }
    /// <summary>
    /// Gets or sets minimum value of the axis.
    /// </summary>
    /// <remarks>
    /// Setting this property sets the MinimumIsAuto property to false.
    /// </remarks>
    public double Minimum { get; set; }
    /// <summary>
    /// Gets or sets a flag indicating whether minimum value of the axis shall be set automatically depending on data.
    /// </summary>
    public bool MinimumIsAuto { get; set; }
    /// <summary>
    /// Gets or sets the maximum value of the axis.
    /// </summary>
    /// <remarks>
    /// Setting this property sets the MaximumIsAuto property to false.
    /// </remarks>
    public double Maximum { get; set; }
    /// <summary>
    /// Gets or sets a flag indicating whether maximum value of the axis shall be set automatically depending on data.
    /// </summary>
    public bool MaximumIsAuto { get; set; }
}
/// <summary>
/// Specifies the possible scale types for an axis.
/// </summary>
public enum AxisScaleType
{
    /// <summary>
    /// Linear scaling.
    /// </summary>
    Linear,
    /// <summary>
    /// Logarithmic scaling.
    /// </summary>
    Logarithmic
}

UC

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Insert chart.
Shape shape = builder.insertChart(ChartType.AREA, 432, 252);
Chart chart = shape.getChart();

// Clear demo data.
chart.getSeries().clear();

// Fill data.
chart.getSeries().add("AW Series 1",
        new Date[]{new Date(2002, 1, 1), new Date(2002, 6, 1), new Date(2015, 7, 1), new Date(2015, 8, 1), new Date(2015, 9, 1)},
        new double[]{640, 320, 280, 120, 150});
ChartAxis xAxis = chart.getAxisX();
ChartAxis yAxis = chart.getAxisY();

// Change the X axis to be category instead of date, so all the points will be put with equal interval on the X axis.
xAxis.setCategoryType(AxisCategoryType.CATEGORY);

// Define X axis properties.
xAxis.setCrosses(AxisCrosses.CUSTOM);
xAxis.setCrossesAt(3);
 // measured in display units of the Y axis (hundreds)
xAxis.setReverseOrder(true);
xAxis.setMajorTickMark(AxisTickMark.CROSS);
xAxis.setMinorTickMark(AxisTickMark.OUTSIDE);
xAxis.setTickLabelOffset(200);

// Define Y axis properties.
yAxis.setTickLabelPosition(AxisTickLabelPosition.HIGH);
yAxis.setMajorUnit(100);
yAxis.setMinorUnit(50);
yAxis.getDisplayUnit().setUnit(AxisBuiltInUnit.HUNDREDS);
yAxis.getScaling().setMinimum(100);
yAxis.getScaling().setMaximum(700);
dataDir = dataDir + "SetAxisProperties_out.docx";
doc.save(dataDir);

UC to set date/time values to axis properties

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Insert chart.
Shape shape = builder.insertChart(ChartType.COLUMN, 432, 252);
Chart chart = shape.getChart();

// Clear demo data.
chart.getSeries().clear();

// Fill data.
chart.getSeries().add("AW Series 1",
        new Date[]{new Date(2017, 11, 06), new Date(2017, 11, 9), new Date(2017, 11, 15),
                new Date(2017, 11, 21), new Date(2017, 11, 25), new Date(2017, 11, 29)},
        new double[]{1.2, 0.3, 2.1, 2.9, 4.2, 5.3}
);

// Set X axis bounds.
ChartAxis xAxis = chart.getAxisX();
xAxis.getScaling().setMinimum(new Date(2017, 11, 5).getTime());
xAxis.getScaling().setMaximum(new Date(2017, 12, 3).getTime());

// Set major units to a week and minor units to a day.
xAxis.setMajorUnit(7);
xAxis.setMinorUnit(1);
xAxis.setMajorTickMark(AxisTickMark.CROSS);
xAxis.setMinorTickMark(AxisTickMark.OUTSIDE);
dataDir = dataDir + "SetDateTimeValuesToAxis_out.docx";
doc.save(dataDir);

UC to change format of numbers on the value axis

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Insert chart.
Shape shape = builder.insertChart(ChartType.COLUMN, 432, 252);
Chart chart = shape.getChart();

// Clear demo data.
chart.getSeries().clear();

// Fill data.
chart.getSeries().add("AW Series 1",
        new String[]{"Item 1", "Item 2", "Item 3", "Item 4", "Item 5"},
        new double[]{1900000, 850000, 2100000, 600000, 1500000});

// Set number format.
chart.getAxisY().getNumberFormat().setFormatCode("#,##0");
dataDir = dataDir + "FormatAxisNumber_out.docx";
doc.save(dataDir);

UC to set bounds of an axis

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Insert chart.
Shape shape = builder.insertChart(ChartType.COLUMN, 432, 252);
Chart chart = shape.getChart();

// Clear demo data.
chart.getSeries().clear();

// Fill data.
chart.getSeries().add("AW Series 1",
        new String[]{"Item 1", "Item 2", "Item 3", "Item 4", "Item 5"},
        new double[]{1.2, 0.3, 2.1, 2.9, 4.2});
chart.getAxisY().getScaling().setMinimum(0);
chart.getAxisY().getScaling().setMaximum(6);
dataDir = dataDir + "SetboundsOfAxis_out.docx";
doc.save(dataDir);

UC to set the interval unit between labels on an axis

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Insert chart.
Shape shape = builder.insertChart(ChartType.COLUMN, 432, 252);
Chart chart = shape.getChart();

// Clear demo data.
chart.getSeries().clear();

// Fill data.
chart.getSeries().add("AW Series 1",
        new String[]{"Item 1", "Item 2", "Item 3", "Item 4", "Item 5"},
        new double[]{1.2, 0.3, 2.1, 2.9, 4.2});
chart.getAxisX().setTickLabelSpacing(2);
dataDir = dataDir + "SetIntervalUnitBetweenLabelsOnAxis_out.docx";
doc.save(dataDir);

Added Feature to Get the docPartGallery Value of StructuredDocumentTag of Type SdtType.DocPartObj.

Related issue WORDSNET-15972.

The behavior of the following properties was improved:

public class StructuredDocumentTag
{
    .....
    public String BuildingBlockGallery{ get; set;}
    public String BuildingBlockCategory{get; set;}
    .....
}

Now it is possible to obtain the value of these properties for “Markup.SdtType.DocPartObj” SDT type. The exception was thrown in previous versions.

Note: these properties still can no be set for SDT of the document part type.

Changed Return Type for FieldMergingArgsBase.Field

Related Issue: WORDSNET-16088 

To provide typed access to a merge field’s properties requested by a customer we have changed the return type of the FieldMergingArgsBase.Field property (and hence of the corresponding descendants' properties) from Field to FieldMergeField.

/// <summary>
/// Gets the object that represents the current merge field.
/// </summary>
public FieldMergeField Field
{
    get { return mField; }
}