Problems with self-closing <font> tag when cell value is empty

If I use the getHtmlString() method and the cell is empty, the result is a self-closing tag (empty tag, void element, singleton tag) <font> .

Example
<Font Style="FONT-FAMILY: Calibri;FONT-SIZE: 12pt;COLOR: #000000;" />

Steps to reproduce

    String xlsxContent = "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";
    try {
        InputStream is = new ByteArrayInputStream(Base64.getDecoder().decode(xlsxContent.getBytes(StandardCharsets.ISO_8859_1)));
        //InputStream is = new FileInputStream("test.xlsx");

        Workbook workbook = new Workbook(is);
        Worksheet ws = workbook.getWorksheets().get(0);
        Cell cell = ws.getCells().get(0, 0);

        // Result: <Font Style="FONT-FAMILY: Calibri;FONT-SIZE: 12pt;COLOR: #000000;" />
        String htmlString = cell.getHtmlString();

        assert htmlString.endsWith("/>") : "String ends not with />";
        System.out.println("String ends with />   - " + htmlString);
    } catch (Exception ex) {
        System.err.println("Error: " + ex.getMessage());
    }

There are some problems:

  1. The <font> tag is not supported in HTML5 and deprecated an previous versions
  2. The <font> tag is not a valid self-closing tag
  3. Current browsers misrepresent the content

Example

<!DOCTYPE html 
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>test</title>
    </head>
    <body>
        <FONT style="color: #000000;" />
        <FONT style="color: #FF0000; font-size: 20px; font-weight: bold;" />
        <p>
            This content is red and bold
        </p>
    </body>
</html> 

Tested on
Aspose.Cells for Java 18.1 & 18.2

Question
Is it a bug? If yes, is it possible to fix the problems in the next version?

Thank you

@esche

Thanks for detailed explanation of the issue and considering Aspose APIs.

We were able to observe this issue. The following rendered text i.e.

This content is red and bold

should not be red and bold because <font> tag has already been closed. We have logged this issue in our database for investigation. Once, we will have some fix or other news for you, we will update you asap.

This issue has been logged as

  • CELLSJAVA-42528 - <Font> is not a valid HTML5 and self-closing tag and Web Browsers misrepresent its contents

@esche

Thanks for using Aspose APIs.

This is to inform you that we have fixed your issue CELLSJAVA-42528 now. We will soon provide the fix after performing QA and including other enhancements and fixes.

The issues you have found earlier (filed as CELLSJAVA-42528) have been fixed in this update. This message was posted using BugNotificationTool from <a href=“https://#{request.env[“HTTPS_HOST”]}”>Downloads module by Amjad_Sahi

The issues you have found earlier (filed as CELLSJAVA-42528) have been fixed in Aspose.Cells for Java 18.4. Please also see the document for your reference:

Can someone confirm that the bug is fixed?
It seems like, that the bug still exists in version 18.8. :confused:

@esche,

We have checked this behavior with the latest version v 18.9.x and observed the issue. We have marked this issue to be analyzed and tested again and will write back here once any feedback is ready to share.

@esche,

Please try to use Cell.getHtmlString(true) method, it will figure out your issue.

Let us know if you still find any issue.

Thank you for your answer.

Unfortunately, I was unable to find the description of the method parameter in the API documentation.

Under this link i found an example and the following description of the method parameter.

If you pass false as parameter, it will return you Normal Html but if you pass true as parameter, it will return Html5 string.

What means “Normal Html” and how is that defined (technical specification) ?


If I use Cell.getHtmlString(true), the method returns a “div” tag instead of a “font” tag.
Thats fine, but it’s not the reported error.

If I use Cell.getHtmlString(false) or Cell.getHtmlString(), the method still returns a self-closing “font” tag (empty tag, void element, singleton tag).

@esche,

Regarding missing description about the parameter in the API documentation, we have noted this issue and it will be updated soon.

The Normal Html is HTML 4.01 and previous versions. Main difference between HTML 4.01 and HTML 5 is that <font> tag is not supported in HTML5.

Regarding the Cell.getHtmlString( true ), if cell does not have any value the div tag is returned which is not self closed. This is properly represented by all web browsers, hence there is no issue.

Similarly if cell has some value, the div tag and cell value is properly returned which is properly rendered by all the browsers.

Could you please explain what issue is faced while using Cell.getHtmlString( true )?

For Cell.getHtmlString( false ), it returns deprecated Html tag which is expected behavior. It will return the Font tag.

Hope this clarifies all the queries.

@ahsaniqbalsidiqui

There is no issue while using Cell.getHtmlString( true )

I think this is an issue and the reason why I have opened this thread.

In HTML4 the tag must not be a self-closing tag.

Example-Result for Cell.getHtmlString( false ) --> invalid HTML4:

 <Font Style="FONT-FAMILY: Calibri;FONT-SIZE: 12pt;COLOR: #000000;" />

@esche,

The ticket has been reopened for further investigations. Once we have an update on it, we will let you know here.

@esche,

This is to inform you that we have fixed your issue now. We will soon provide you the fixed version after performing QA and incorporating other enhancements and fixes.