facebooktwittermenuarrow-up

GemBox Support Forum

Excel export pdf in Docker linux container

Hi All,
I’ve tested the pdf export both on windows pc (running in iis express) and docker linux based image. I’ve modify the docker file to install the needed libraries:

# install System.Drawing native dependencies as Found in gembox guide https://www.gemboxsoftware.com/spreadsheet/examples/create-excel-pdf-on-docker-net-core/5902
# Update package sources to include supplemental packages (contrib archive area).
RUN sed -i 's/main/main contrib/g' /etc/apt/sources.list

# Downloads the package lists from the repositories.
RUN apt-get update

# Install System.Drawing.Common dependency.
RUN apt-get install  -y --allow-unauthenticated libc6-dev libgdiplus libx11-dev && rm -rf /var/lib/apt/lists/*

But the pdf in docker is a little bit flattened:

The pdf export in windows is well sized. Any ideas?

Thanks,
Regards

Dario

Hi Dario,

I’m afraid that without reproducing this and investigating the resulting files I cannot say anything for sure.

Nevertheless, I believe that the problem is probably due to different fonts being used on Windows and Linux systems.
Try taking all the fonts that your Excel file specifies from the Windows fonts, place them into your application’s folder, and use them as Private Fonts.

I hope this helps.

If the problem remains, please send us a small Visual Studio project (together with your Excel file) so that we can investigate it.

Regards,
Mario

Hi Mario,
I’ve tested the export also with excel that contains just an image.
The source code is very simple:

[AllowAnonymous]
[HttpGet]
[Route("[action]")]
public async Task TestExcelGembox()
{
string basePath = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), “Logs”);

        // If using Professional version, put your serial key below.
        SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
        
        // Save as pdf
        workbook.Save(Path.Combine(basePath, $"PWR-{DateTime.UtcNow.ToString("yyyy-MM-dd-HH-mm-ss")}.pdf"), GemBox.Spreadsheet.SaveOptions.PdfDefault);

        return Ok();
    }

How can I share the excel? Consider that is very simple, it contains just the image logo seen above.
My docker file is:

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

Update package sources to include supplemental packages (contrib archive area).

RUN sed -i ‘s/main/main contrib/g’ /etc/apt/sources.list

Downloads the package lists from the repositories.

RUN apt-get update

Install System.Drawing.Common dependency.

RUN apt-get install -y --allow-unauthenticated libc6-dev libgdiplus libx11-dev && rm -rf /var/lib/apt/lists/*

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY [“Production.WebApi/Production.WebApi.csproj”, “Production.WebApi/”]

RUN dotnet restore “Production.WebApi/Production.WebApi.csproj”
COPY . .
WORKDIR “/src/Production.WebApi”
RUN dotnet build “Production.WebApi.csproj” -c Release -o /app/build

FROM build AS publish
RUN dotnet publish “Production.WebApi.csproj” -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT [“dotnet”, “Production.WebApi.dll”]

In the meantime I’ll try to work with the fonts.

Thanks,
Regards

Dario

Hi Dario,

You can send us your Excel file via email or submit it as an attachment to a support ticket.
Please refer to our Contact page.

Regards,
Mario

Hi Mario,
I’ve sent the file in 25308

Thanks,
Regards

Dario

Hi Dario,

Your Excel file uses Calibri as a default font.
If you install this font on your Linux image or add it to your application as a private font, you’ll notice that the rows are rendered with the same height.

However, there is a small difference between the column widths, that is because GemBox.Spreadsheet currently uses System.Drawing.Common for this calculation.
Nevertheless, note that we are currently working on replacing this dependency, after that is done I believe there shouldn’t be any differences in calculations when the same font files are provided.

I hope this helps.

Regards,
Mario