Tag Tables in PDF Document for Accessibility using Aspose.PDF for .NET

Share on FacebookTweet about this on TwitterShare on LinkedIn

Aspose.PDF for .NET has been maintaining its usability since the beginning by offering exciting and most appealing features consistently. Speaking of which, a new monthly release of the API has already been rolled out and it does not disappoint you because of useful enhancements and productive features. You are going to have a quick tour to what’s new in the API and why you should not be holding yourself from upgrading your recent version. Let’s have insights into what Aspose.PDF for .NET 19.6 has brought and how you can consume it for better productivity and impeccable PDF Documents generation.

Create Accessible PDFs with Tagged Tables

Tagging tables inside PDF is quite important as it helps ensure that the data listed is listed out in clear and concise manner. A tagged table makes it easier for users to read content in very long tables with repetitive data and also makes it accessible for any viewers who interact with your content that may be using accessible programs.

You can now tag tables in PDF Document for Accessibility using Aspose.PDF for .NET. For the purpose, it provides TableElement Class. In order to create table, you can use CreateTableElement() Method of ITaggedContent Interface. Following is complete code example which can be followed in order to achieve full functionality:

Styling Table Elements

Styling table elements is as much important and demanding as creating them. It gives a better and professional look to your content inside PDF document and helps users during reading it. Aspose.PDF for .NET allows you to apply styling to table elements i.e. Table Content, Table Row and Table Cells. Properties like following can be specified using offered classes by the API in order to apply styling:

  • BackgroundColor
  • Border
  • Alignment
  • CornerStyle
  • Broken
  • ColumnAdjustment
  • ColumnWidths
  • DefaultCellBorder
  • DefaultCellPadding
  • DefaultCellTextState
  • DefaultColumnWidth
  • IsBroken
  • IsBordersIncluded
  • Left
  • Top

Complete and fully functional examples are give in API documentation which will show you how to style tagged table content in PDF documents. You can find these examples over following links:

More Enhancements and Features

We are not over yet as this release of the API has very much to offer. Along with the functionalities discussed above, Aspose.PDF for .NET offers following useful enhancements and new features:

Convert Markdown to PDF

You can now convert a Markdown data file into PDF using the API. In order to do that, you simply have to utilize API with few lines of code as follows:


Set Default Font while Generating Images from PDF Pages

Sometimes due to an absent font, you are unable to get correct output while converting PDF Pages into Images. You can now set Default Font Name during rendering PDF Pages to Images if a font is not available in the document. Following code snippet shows you how:


Useful Fixes

  • Following are useful fixes which API includes in this revision:
  • Font colors rendering is improved during PDF to HTML Conversion
  • HtmlFragment functionality has been rectified
  • PDF to JPG Conversion has been improvised
  • Memory consumption and usage has been optimized
  • HTML to PDF Conversion is further improved
  • Text Searching Algorithms have been improved further
  • Document Flattening functionality has been rectified for better performance

You can view detailed information in release notes page of the API in documentation. Feel free to reach us in case of any inquiry or required assistance. Keep yourself in touch with us so that you won’t miss another update about future revision of the API.

Posted in Aspose.PDF Product Family, Asad Ali | Leave a comment

Improved HTML Formatting in Aspose.Words for Reporting Services 19.8

Share on FacebookTweet about this on TwitterShare on LinkedIn
Aspose.Words for SSRS icon

Hi guys! We are pleased to announce new release of Aspose.Words for Reporting Services i.e. 19.8. We have upgraded it to Aspose.Words for .NET 19.8 and improved HTML formatting for output documents. Please check the release notes for more detail.

You can download the latest release of Aspose.Words for Reporting Services 19.8 from the following link:

Download Aspose.Words for Reporting Services 19.8

When time allows you can check documentation of Aspose.Words for Reporting Services and talk about this release and other related issues in our forum.



Posted in Aspose.Words Product Family | Leave a comment

Detect Hyperlink Type with Aspose.Cells for Java 19.8

Share on FacebookTweet about this on TwitterShare on LinkedIn

You get a list of hyperlinks from an Excel file and now thinking about how to categorise them into different types in order to select the appropriate method for processing each of them. Don’t panic! Aspose.Cells for Java 19.8 is released containing the solution for this problem. This is not the only feature introduced in this release but there are many more to explore like extracting embedded MOL file, getting total page count before converting to PDF/Image, inserting SVG file into a worksheet and supporting Java 12 are just a few to list here. You may have a look at the release notes to get the complete list of features and bug fixes which are part of this new release. Let us see in detail what are these features and how to use them.

Detect Hyperlink Type

There can be different types of hyperlinks which can be used in an Excel file like external, cell reference, file path and email. Our new release has introduced an enumerator TargetModeType which represents the type of hyperlink. A new property LinkType is introduced in Hyperlink class which return the hyperlink type using above mentioned enumerator. Following are the enumerator members:

Here is an example which can be used to exercise this new feature. Also for more details visit here.

Program output vs template Excel file

Get total page count before PDF/image creation

Well, the title is explaining this new feature. When a file has too many pages, the process of converting to pdf/image may use too much memory and CPU, and OOM exception may be thrown. Getting total page count before converting can indicate this risk, and do some actions(e.g. skip this file) or print the selected pages to avoid the undesired results. For example one of my sample Excel file (870 KB) was showing about 38 million pages. Just imagine, what will happen if you come across a conversion containing such a huge number of pages!!! Following is an example to show the usage of new classes SheetPrintingPreview and WorkbookPrintingPreview. Both of these classes contain a property EvaluatedPageCount which returns the page count of the printout or PDF file. Here is an article which provides more details in this regard.

Extracting Embedded MOL File

As you know that molecular data file created in the MDL Molfile format, a chemical file format; contains plain text information and stores information about atoms and bonds; often used as a standard exchange format for molecular information. This type of file can be embedded in the Excel file. In this latest release, support is provided to extract object of such an uncommon type i.e. MOL. The following code snippet demonstrates extracting embedded MOL file and saving it to disk. For more details and sample file please visit here.

Other features and enhancements

  • Support for Java 12 is available now
  • Enhancements to avoid high CPU and memory usage during Excel to PDF conversion
  • Copying waterfall chart style while copying the workbook
  • Proper refreshing of PivotTable and PivotCharts
  • Avoid differences during conversion to HTML
  • Remove unwanted extended borderline in Excel to PDF rendering
  • Calculate appropriate image position while rendering to PDF
  • Ensure copying table properties while using copyColumns() function
  • Keep the image transparent instead of opaque during picture copy

The wait is over and you may get ready to test the new features. Following resources may help you to achieve your targets using Aspose.Cells.

Posted in Aspose.Cells Product Family | Leave a comment

Detect Hyperlink Type with Aspose.Cells for .NET 19.8

Share on FacebookTweet about this on TwitterShare on LinkedIn
Aspose.Cells for .NET logo Guys, in the blog you will learn how to categorize hyperlinks in order to select the appropriate method for processing each of these links. You may also explore and extract embedded MOL file. Moreover, we now provide a solution when rendering bigger files (having millions of pages in the sheet(s)). You may get total pages count before converting to PDF/Image, This is a good thing to know to decide whether to render or not to render. You may have a look at the release notes to get the complete list of features and bug fixes which are part of this new release. So let’s not wait another moment to review the release notes.  To get essence of the public release (Aspose.Cells for .NET v19.8), I am giving you preview of the new features and other enhancements available in it.

Detect Hyperlink Type

There can be different types of hyperlinks which can be used in an Excel file like external, cell reference, file path and email. Our new release has introduced an enumerator TargetModeType which represents the type of hyperlink. A new property LinkType is introduced in Hyperlink class which return the hyperlink type using above mentioned enumerator. See the document on how to detect different types of hyperlinks for your complete reference. Here is an example which can be used to exercise this new feature.
Program output vs template Excel file

Get total page count before PDF/image creation

Well, the title is explaining this new feature. When a file has too many pages, the process of converting to pdf/image may use too much memory and CPU, and OOM exception may be thrown. Getting total pages count before converting can indicate this risk, and do some actions (e.g. skip this file) or print the selected pages to avoid the undesired results. For example one of my sample Excel file (870 KB) was showing about 38 million pages. Just imagine, what will happen if you come across a conversion containing such a huge number of pages. Following is an example to show the usage of new classes SheetPrintingPreview and WorkbookPrintingPreview. Both of these classes contain a property EvaluatedPageCount which returns the page count of the printout or PDF file.
See the document on printing preview workbook and worksheet for your complete reference.

Extracting Embedded MOL File

As you know that molecular data file created in the MDL Molfile format, a chemical file format; contains plain text information and stores information about atoms and bonds; often used as a standard exchange format for molecular information. This type of file can be embedded in the Excel file. In this latest release, support is provided to extract object of such an uncommon type i.e. MOL. The following code snippet demonstrates extracting embedded MOL file and saving it to disk.
See the document on extract embedded MOL file for your reference.

Other enhancements and fixes

  • An enhancement is made to Aspose.Cells.GridWeb for compatibility with MVC.
  • Improved performance for calculating large matrix with double values.
  • The document fails to save when saved more than 10 times.
  • Handled an exception when getting image from SheetRender for encrypted ODS file.
  • Handled an excetion when calculating charts on an excel with a number > int.MaxValue.
  • Fixed the error "IndexOutOfRangeException" when using smart marker with a pivot table and saving the workbook.
  • Fixed an error "Index was outside the bounds of the array" while converting XLSX to PDF.
  • Fixed an error "Invalid MsoLineDashStyle string val" when loading an XLSX file format.
To use these features and avail other enhancements and fixes, I recommend you to try the release Aspose.Cells for .NET v19.8. Moreover, I recommend you to browse Developers’ Guide for your complete reference on what you can deliver using the APIs. Also, you are always welcome to share your review, concerns or feedback on forums.
Posted in Aspose.Cells Product Family | Leave a comment

gzip Compression Format Supported by Aspose.ZIP for .NET 19.8

Share on FacebookTweet about this on TwitterShare on LinkedIn

Guys, let’s check out what’s new for you in Aspose.ZIP for .NET 19.8 release.

Retrieve gzip Archive Name

The following code example shows how to open an archive from a stream and retrieve its name.

Compress into a .gz Archive

The following code example shows how to compress a file using GZipArchive instance.

Open gzip Archive for Processing

The following code example shows how to open a gzip archive.

Moreover, to learn how to extract/copy a .gz file into a MemoryStream, please refer to the following article:
Working with gzip Archives

Extraction of Huge Size Archives Supported

Previously, Aspose.ZIP for .NET API was unable to extract a .zip archive with huge size when it contains several entries and compressed size of first entry is above 4 GB. We have fixed this issue in Aspose.ZIP for .NET API 19.8.

See Also Useful Links

The resources, you may need to accomplish your tasks:

Keeping the Aspose tradition, you are welcome to shape the upcoming releases of Aspose.ZIP for .NET API by posting your suggestions and concerns in the Aspose.ZIP for .NET support forum.

Posted in Aspose.ZIP Product Family | Leave a comment

Aspose.Words for C++ and Aspose.Cells for C++ Security Updates

Share on FacebookTweet about this on TwitterShare on LinkedIn

Aspose makes it a top priority to ensure that our products are free of any bugs which may cause security issues for customers. Our internal teams carefully analyze all releases for possible vulnerabilities and to keep on top of emerging threats.

Recently we were made aware of two vulnerability reports from security researcher Cisco Talos.
Unfortunately, there was a long delay in us receiving these reports because Cisco Talos failed to get in touch via one of the many channels on our website, but instead used incorrect email addresses. However, as soon as we were independently made aware of these reports our development teams responded quickly and we were able to release fixes to these issues within 5 business days.

All customers affected were alerted via email, however, the issues are summarised below:

Aspose.Words for C++ 19.8 or earlier
CVE Number: CVE-2019-5041
Description: An exploitable Stack Based Buffer Overflow vulnerability exists in the EnumMetaInfo function of Aspose Aspose.Words for C++.
Reported to Aspose: 23-Aug-2019
Fix Released: 29-Aug-2019

Aspose.Cells for C++ 19.4 or earlier
CVE Number: CVE-2019-5041, CVE-2019-5032
Description: An exploitable out-of-bounds read vulnerability exists in the Number record parser and LabelSst record parser of Aspose.Cells for C++.
Reported to Aspose: 23-Aug-2019
Fix Released: 29-Aug-2019

It is our assessment that the vulnerabilities would be extremely difficult for an attacker to make use of in the real world, but that does not stop us taking the issues seriously and addressing them quickly. We encourage customers of Aspose.Words for C++ and Aspose.Cells for C++ to download the latest versions from the below links:

By keeping their Aspose product support & maintenance subscription up-to-date, customers can ensure they always to get instant access to the latest bug and security fixes, as well as great new features added in every release.

Posted in Aspose.Total Product Family | Tagged , , | Leave a comment

Draw Shapes in Page using Aspose.Diagram for .NET

Share on FacebookTweet about this on TwitterShare on LinkedIn

Microsoft office is one of the most powerful drawing tools in the market. If you want to work with it programmatically and develop Add-Ons, it becomes a hassle. Often times it becomes even hard to perform a basic task – like drawing a shape inside a page. Well, you don’t need to worry much! It’s as easy as pie when you draw shapes using Aspose.Diagram for .NET.

Using Aspose.Diagram for .NET, you can not only draw basic but complex shapes like Bezier, Spline, Polyline and using just a couple of lines of code.

Let’s draw some shapes in a page using Aspose.Diagram for .NET

Draw Bezier

Drawing Bezier is pretty simple, you can draw it using the DrawBezier method.

// Load diagram
Diagram diagram = new Diagram();
// Initiazlie a new PointF
PointF[] ps = new PointF[] { new PointF(1, 1), new PointF(2, 2), 
                             new PointF(3.79949292203676f, 0) };
// Draw brezier in diagram
diagram.Pages[0].DrawBezier(1, 1, 2, 2, ps);
// Save diagram
diagram.Save("DrawBezierInPage.vsdx", SaveFileFormat.VSDX);

The following is the resultant bezier shape.

Draw Polyline

Similarly, drawing polyline is even simpler, you can draw it using the DrawPolyline method.

// Load diagram
Diagram diagram = new Diagram();
// Initiazlie a new PointF[]
PointF[] ps = new PointF[] { new PointF(1, 1), 
                             new PointF(2, 2), 
                             new PointF(3.79949292203676f, 0) };
// Draw polyline in page
diagram.Pages[0].DrawPolyline(1, 1, 2, 2, ps);
// Save diagram
diagram.Save(dataDir + "DrawPolylineInPage_out.vsdx", SaveFileFormat.VSDX);

The following is the resultant polyline shape.

Draw Spline

As explained earlier drawing shapes using Aspose.Diagram for .NET is a piece of cake, you can draw spline in a page using the DrawSpline method.

// Load diagram
Diagram diagram = new Diagram();
// Initiazlie a new PointF[]
PointF[] ps = new PointF[] { new PointF(1, 1.3270758925347308f),
                 new PointF(2.2926845121364643f, 4.3581517392187368f),
                 new PointF(4.6526026522346893f, 5.4640748257705201f),
                 new PointF(6f, 7.327075892534732f) };
// Draw Spline in diagram
diagram.Pages[0].DrawSpline(1, 1, 2, 2, ps);
// Save diagram
diagram.Save(dataDir + "DrawSplineInPage.vsdx", SaveFileFormat.VSDX);

The following is the resultant spline shape.

For more details, please feel free to visit documentation. To explore more examples you can access our open source examples and in case you would have any query, please feel to contact us using our forum.

Posted in Aspose.Diagram Product Family | Tagged , , , , | Leave a comment

Support of JasperReports 6.9.0 in Aspose.Words for JasperReports 19.7

Share on FacebookTweet about this on TwitterShare on LinkedIn

It is our honor to announce latest version of Aspose.Words for JasperReports 19.7 which is available for download.

Download Aspose.Words for JasperReports 19.7

We have upgraded this release to Aspose.Words for Java 19.7. We have also added support of JasperReports 6.9.0 in this release. Now, you can use Aspose.Words for JasperReports with JasperReports 6.9.0.

Moreover, we have improved the export of nested tables and header and footer in output Word document.

For more about Aspose.Words for JasperReports 19.7, please check the release notes. When time allows you can check documentation of Aspose.Words for JasperReports and talk about this release and other related issues in our forum.

Posted in Aspose.Words Product Family | Leave a comment

Markdown Features (.md File Format) Supported by Aspose.Words for C++ 19.8

Share on FacebookTweet about this on TwitterShare on LinkedIn

Hello guys, let’s check out what’s new for you in Aspose.Words for C++ 19.8 release.

Load and Convert Encrypted OpenDocument (.odt or .ott format)

The OdtSaveOptions class can now be used to specify additional options when saving a document into the ODT or OTT format. You can initialize a new instance of this class that can be used to save a document in the ODT format encrypted with a password. You can also use OdtSaveOptions.Password property to get or set a password to encrypt Word document. The code sample below shows how to load and save OpenDocument encrypted with a password.

Compress Metafiles in Word Document

In MS Word, all the metafiles are compressed by default regardless of their size. However, Aspose.Words used to compress large metafiles only and smaller ones were not compressed just because of better performance. Aspose.Words for C++ now provides a property AlwaysCompressMetafiles, to facilitate the users if they want to compress all the metafiles either large or small. Its default value is true which means that all metafiles shall be compressed regardless of their sizes and false means that small metafiles shall not be compressed for performance reason.

Markdown Features (.md Format)

Markdown is a simple way to format plain text that can easily be converted to HTML. Markdown features currently supported by Aspose.Words are {Headings, Block quotes, Horizontal rules, Bold emphasis, Italic emphasis}. The Markdown feature implementation mostly follows the CommonMark specification in Aspose.Words API and all the features are represented as corresponding styles or direct formatting. Which means that:

  • Bold and Italic are represented as Font.Bold and Font.Italic.
  • Headings are paragraphs with Heading 1 – Heading 6 styles
  • Quotes are paragraphs with “Quote” in style name
  • HorizontalRule is a paragraph with HorizontalRule shape

For more details, please read the following article.
Working with Markdown Features

Linked TextBoxes in Word Document

TextBox class is used to specify how text is displayed inside Shape. It provides a public property Parent  to get the parent Shape of the TextBox and to allow to find linked Shape from linked TextBox. Please check the following examples for more details:

Check if Particular DML Text Effect is Applied

Aspose.Words for C++ now provides Font->HasDmlEffect() method to check if particular DML text effect is applied to the Run. This is a boolean type property and returns true if particular DML text effect is applied. The given below code example shows how to use this property.

Working with TableStyle

Aspose.Words for C++ now provides a TableStyle class inherited from Style class. The TableStyle facilitates user to apply different styling options such as shading, padding, indentation, CellSpacing and Font etc. For more details, please refer to the following sections:

Get Revision Group Details

The Revision.Group property in Revision class can be used to get details if the revision belongs to any group. Its value will be null if the revision does not belong to any group. If revision type is RevisionType.StyleDefinitionChange or if the revision no longer exists in document context (accepted/rejected) then it means that Revision has no group.

See Also Useful Links

The resources, you may need to accomplish your tasks:

Keeping the Aspose tradition, you are welcome to shape the upcoming releases of Aspose.Words for C++ API by posting your suggestions and concerns in the Aspose.Words for C++ support forum.

Posted in Aspose.Words Product Family | Leave a comment

Track progress in Excel to PDF rendering with Aspose.Cells for .NET 19.7

Share on FacebookTweet about this on TwitterShare on LinkedIn

Aspose.Cells for .NET logoDo you need to track your Excel to PDF conversion for bigger files? Aspose.Cells can suit your needs; it provides a sort of callback event/mechanism that notifies you the progress of the conversion. All you need to do it is implement an interface and write your code using Aspose.Cells APIs for your needs. In this post, I will share how to track your conversions for Excel to PDF rendering. Moreover, Aspose.Cells now supports to convert combo charts precisely and elegantly from XLS to XLSX and vice versa. You may find these exciting features and other enhancements in the release. So let’s not wait another moment to review the release notes.  To get essence of the public release (Aspose.Cells for .NET v19.7), I am giving you preview of the new features and other enhancements available in it.

Track Conversion Progress

Suppose, you are converting a huge Excel file to PDF, watching the loading screen and waiting for the program to finish the task. A lot of patience is required for this and you think there should be some means which shows the document conversion progress. We have achieved this functionality by providing the IPageSavingCallBack interface. Using this interface you will be able to get the total number of pages which are to be rendered to PDF along with the methods PageStartSaving and PageEndSaving. These methods should be implemented in some custom class which will continuously provide the current page number which is being rendered and the total number of pages, etc. Using this custom class you can design graphical controls or simply display text on console to show the document conversion progress page by page.

Here is a ready to run example along with a custom class sample where these methods implementation is demonstrated. Just copy this code and enjoy the new progress monitoring feature.

The following is the code for the TestPageSavingCallback custom class.

Here is the sample output of the program:

Start saving page index 0 of pages 11
End saving page index 0 of pages 11
Start saving page index 1 of pages 11
End saving page index 1 of pages 11
Start saving page index 2 of pages 11
End saving page index 2 of pages 11
Start saving page index 3 of pages 11
End saving page index 3 of pages 11
Start saving page index 4 of pages 11
End saving page index 4 of pages 11
Start saving page index 5 of pages 11
End saving page index 5 of pages 11
Start saving page index 6 of pages 11
End saving page index 6 of pages 11
Start saving page index 7 of pages 11
End saving page index 7 of pages 11
Start saving page index 8 of pages 11
End saving page index 8 of pages 11

Following is the summary of this new feature:

  • Get total number of pages which can be rendered
  • Get trigger when a page rendering is started with page index
  • Get trigger when a page rendering is finished with page index
  • Cancel or abort an operation at a particular page as per your requirement

Convert XLS to XLSX with Combo Chart

Older versions of Aspose.Cells were not converting the XSL to XLSX with Combo charts elegantly as these rendered charts might be flattened. The good news is that this shortcoming is no more there with the release of this new version as this issue is addressed and the charts can be rendered correctly.

Following comparisons show the results before and after this update.

The result before the update

The result after the update


To use these features and benefit other enhancements and fixes, I recommend you to try the release Aspose.Cells for .NET v19.7. Moreover, I recommend you to browse Developers’ Guide for your complete reference on what you can deliver using the APIs. Also, you are always welcome to share your review, concerns or feedback on forums.

Posted in Aspose.Cells Product Family | Leave a comment