Mask an image to clip corners of the content

Hello,

I’m trying to use Aspose.HTML 2025.06 for .Net to convert HTML into PDF.
HTML consist of a base64 image and an overlay on top. This overlay is meant to clip the corners of the chart visible on the image.
I have tried:

  1. placing a transparent div with a border on top of the image. This resulted in an visual defect - corners are rendered with thin gaps, so the image beneath is visible.
  2. placing another base64 image on top of the other one. This resulted in other visual defect - the overlay image is rendered with additional thin, dark border

Is there a workaround that I could use for this case?

Here is the comparison of how HTML+CSS is rendered in web browser vs how the generated PDF looks like.
img-overlay-issue.png (176.4 KB)

Example solution can be found in attachments. Run the solution and find the “output.pdf” in “bin” folder.
ConsoleApp1.zip (54.6 KB)

@mlamla

Cause

The issue you’re experiencing with clipping corners of an image in your PDF conversion likely stems from the way the overlay is being rendered. Using a transparent div or another base64 image can lead to visual artifacts, such as thin gaps or unwanted borders, due to how the rendering engine handles transparency and layering.

Solution

To achieve a clean clipping effect without visual defects, consider using an SVG mask or a clipping path. This approach allows you to define the shape of the visible area directly, which can help eliminate the gaps and borders you’re encountering.

Code

Here’s a basic example of how you can implement an SVG mask in your HTML:

<div style="position: relative; width: 300px; height: 300px;">
    <img src="data:image/png;base64,...your_image..." style="width: 100%; height: 100%; clip-path: url(#clip-path);" />
    <svg width="0" height="0">
        <defs>
            <clipPath id="clip-path">
                <rect x="0" y="0" width="100%" height="100%" rx="20" ry="20" />
            </clipPath>
        </defs>
    </svg>
</div>

In this example, the clip-path is defined in an SVG and applied to the image. You can adjust the rx and ry attributes to change the corner radius.

Next Steps

  1. Replace your current overlay method with the SVG mask approach.
  2. Test the output by converting the updated HTML to PDF using Aspose.HTML.
  3. Adjust the dimensions and corner radius as needed to fit your design requirements.

If you have any further questions or encounter additional issues, please reach out for more assistance. I’m here to help!

@mlamla

We have opened the following new ticket(s) in our internal issue tracking system and will deliver their fixes according to the terms mentioned in Free Support Policies.

Issue ID(s): HTMLNET-6507

You can obtain Paid Support Services if you need support on a priority basis, along with the direct access to our Paid Support management team.

Hey @asad.ali ,
can you provide me with any tips or a workaround for my case? the one suggested by bot does not seem to work.

I found a workaround. Div with background image, clipped by container div. The css looks ugly though and componentizing this solution does not look simple. Looking forward to your fixes.

result:
fixed-img-overlay-issue.png (35.9 KB)

code:

<style>
    .image-div {
        background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACVgAAAGhCAYAAACeMk3UAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAABcRgAAXEYBFJRDQQAAE1dJREFUeJzt3KEuhmEch2GfmaYpAt0BmCA7DU1VbA7Cpqia05AFcwA6QfmapjwOgHuzva99xnUdwH+/8rR7z2KMMdYAAAAAAAAAAAD4ZH3VAwAAAAAAAAAAAH4rgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAABIEVAAAAAAAAAABAEFgBAAAAAAAAAAAEgRUAAAAAAAAAAEAQWAEAAAAAAAAAAASBFQAAAAAAAAAAQBBYAQAAAAAAAAAAhI1VD+BrL2/vq54AAITdrc3JN87un2dYAgD8hOujvck3tm+eZlgCMN3ydH/yje2LuxmWwN+3vDyefOP29WCGJfA/nOw8TjvwsJhnCPwHh2P6jXNvDr7taoY3x+z8YAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAEFgBQAAAAAAAAAAEARWAAAAAAAAAAAAQWAFAAAAAAAAAAAQBFYAAAAAAAAAAABBYAUAAAAAAAAAABAEVgAAAAAAAAAAAGExxhirHgEAAAAAAAAAAPAb+cEKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIAisAAAAAAAAAAAAgsAKAAAAAAAAAAAgCKwAAAAAAAAAAACCwAoAAAAAAAAAACAIrAAAAAAAAAAAAILACgAAAAAAAAAAIHwA7P4eO+cbftgAAAAASUVORK5CYII=');
        background-size: cover;
        background-position: center;
        background-repeat: no-repeat;
        left: -16px;
        top: -20px;
        width: 358px;
        height: 45px;
        margin: 0;
        border: 0px transparent;
        position: absolute;
    }

    .image-div-clipper {
        border-radius: 5px;
        overflow: hidden;
        width: 326px;
        height:24px;
        /*background-color: blue;*/
        margin: 10px;
        border: 0px transparent;
        position: relative;
    }
</style>
<div style="border: red 1px solid; padding: 10px;">
    <p>Barchart as a background image, clipped by container area</p>
    <div class="image-div-clipper">
        <div class="image-div"></div>
    </div>
</div>

@mlamla

Thanks for sharing more information. We will be taking this information into consideration while applying the fix and let you know as soon as the ticket is resolved. Please spare us some time.

We are sorry for the inconvenience.