使用自定义字体作为水印

GroupDocs.Watermark 是一个强大的库,用于管理各种格式文档中的水印,提供多种自定义选项。它的强大功能之一是能够使用自定义字体,使开发人员能够将独特的排版融入他们的水印。

在本文中,我们将探讨如何使用未安装在系统上的自定义字体。此外,我们将演示如何配置一个 Linux Docker 容器,以便在特定字体直接安装在容器环境中的测试场景中进行测试。

为什么使用自定义字体作为水印?

使用自定义字体作为水印具有几个优点:

  1. 品牌识别:确保您的文件与您组织的排版指南一致。
  2. 系统独立性:避免对系统安装字体的依赖,确保在不同环境中的可移植性和兼容性。

GroupDocs.Watermark 如何支持自定义字体?

GroupDocs.Watermark 通过允许开发人员指定一个包含字体文件的文件夹来简化自定义字体的使用。 然后,您可以通过其字体系列名称引用所需的字体,这使得水印处理过程灵活且易于集成到您的工作流程中。

实施包括三个主要步骤:

  1. 指定包含字体的文件夹:定义存放字体文件的目录路径(例如,.ttf.otf)。
  2. 设置水印的字体:使用 Font 类初始化字体,指定其字体家族名称、文件夹路径和大小。
  3. 将水印添加到文档:将配置的水印应用到您的目标文档。

逐步在 C# 中实现

在您的水印解决方案中使用自定义字体的方法如下:使用 GroupDocs.Watermark:

关键步骤:

  • 指定文档和输出文件的路径。
  • 设置自定义字体文件所在的文件夹路径。
  • 用家族名称和属性初始化 Font 对象。
  • 创建文本水印并配置其属性。
  • 将水印添加到文档中并保存。
using GroupDocs.Watermark;
using GroupDocs.Watermark.Options; 
using GroupDocs.Watermark.Watermarks; 

class Program
{
    static void Main()
    {
        string documentPath = "path-to-your-document.docx"; 
        string outputFileName = "path-to-output/document-with-watermark.docx"; 

        // Initialize the Watermarker
        using (Watermarker watermarker = new Watermarker(documentPath))
        {
            // Specify the folder containing custom font files
            string fontsFolder = "path-to-folder_with_fonts";

            // Initialize the font to be used for the watermark
            Font font = new Font("font_family_name", fontsFolder, 36, FontStyle.Bold); // Font family name, size and style

            // Create the watermark object
            TextWatermark watermark = new TextWatermark("Test watermark", font);

            // Set additional watermark properties
            watermark.ForegroundColor = Color.Blue; // Set the foreground color of the watermark
            watermark.Opacity = 0.4; // Set the opacity of the watermark
            watermark.HorizontalAlignment = HorizontalAlignment.Center; // Center horizontally
            watermark.VerticalAlignment = VerticalAlignment.Center; // Center vertically

            // Add the watermark to the document
            watermarker.Add(watermark);

            // Save the watermarked document
            watermarker.Save(outputFileName);
        }
    }
}

在 Linux Docker 容器中测试 GroupDocs.Watermark

当在Linux Docker容器中测试GroupDocs.Watermark时,您可能会遇到一些情况,在这些情况下,您希望假设系统中安装了特定字体。这对于验证依赖字体的功能或在字体文件夹配置不可行的环境中尤其有用。

以下是如何配置 Docker 容器以安装所需的依赖项和自定义字体。

Dockerfile for Testing

以下是一个在Linux Docker容器中运行名为 WebApp 的 .NET 项目的示例 Dockerfile。该文件还演示了如何安装自定义字体(MyFont.ttf)以及 GroupDocs.Watermark 所需的依赖项:

# Use ASP.NET runtime as base image
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80

# Add libgdiplus and libc6-dev for graphics support
RUN apt-get update && apt-get install -y apt-utils libgdiplus libc6-dev

# Add `contrib` archive area to package sources list
RUN sed -i'.bak' 's/$/ contrib/' /etc/apt/sources.list

# Add default fonts
RUN apt-get update && apt-get install -y ttf-mscorefonts-installer fontconfig
RUN fc-cache -f -v # Refresh font cache

# Copy custom font to the font directory
COPY ["WebApp/MyFont.ttf", "/usr/share/fonts/truetype/"]
RUN fc-cache -f -v # Refresh font cache again

# Building the .NET application
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["WebApp/WebApp.csproj", "WebApp/"]
RUN dotnet restore "WebApp/WebApp.csproj"
COPY . .
WORKDIR "/src/WebApp"
RUN dotnet build "WebApp.csproj" -c Release -o /app/build

# Publish the application
FROM build AS publish
RUN dotnet publish "WebApp.csproj" -c Release -o /app/publish /p:UseAppHost=false

# Final stage with ASP.NET runtime
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .

# Set the entry point for the container
ENTRYPOINT ["dotnet", "WebApp.dll"]

Dockerfile 中的关键点

安装所需库:

RUN apt-get update && apt-get install -y apt-utils libgdiplus libc6-dev

这些库对于在 Linux 中正确渲染图像至关重要。

安装默认字体:

RUN apt-get update && apt-get install -y ttf-mscorefonts-installer fontconfig

RUN fc-cache -f -v

此步骤安装默认字体,如果您在未设置许可证的情况下使用 GroupDocs.Watermark,则需要这些字体。

添加自定义字体:

COPY ["WebApp/MyFont.ttf", "/usr/share/fonts/truetype/"]

RUN fc-cache -f -v

此命令将自定义字体(MyFont.ttf)复制到容器中适当的字体目录,并更新字体缓存。

构建和运行应用程序:

剩余的命令配置 Docker 容器以构建和运行您的 .NET 应用程序 (WebApp),确保在运行时可以使用自定义字体。

.csproj 中启用 Unix 支持

由于 .NET 6 在 Linux 中的 System.Drawing.Common 库存在限制,您需要通过向 .csproj 文件添加特定设置来启用 Unix 支持。有关这些限制的更多详细信息,请参阅 Microsoft documentation

<ItemGroup>
    <RuntimeHostConfigurationOption Include="System.Drawing.EnableUnixSupport" Value="true" />
</ItemGroup>

此设置确保 System.Drawing 功能在 Linux 环境中正常工作,这对于使用 GroupDocs.Watermark 时的正确渲染至关重要。

使用自定义字体的最佳实践

要充分利用此功能,请遵循以下最佳实践:

  1. 整理字体:将您的自定义字体保存在一个专用文件夹中,以便于查阅。
  2. 验证字体名称:确保您正确指定字体系列名称以避免渲染问题。
  3. 在容器化环境中进行测试:使用 Docker 容器在受控的基于 Linux 的环境中测试你的应用程序。

结论

在 GroupDocs.Watermark 中使用自定义字体的能力增强了您对水印设计的控制,使您能够满足特定的品牌和样式要求。通过指定字体文件夹或在 Linux 容器中安装字体,您可以在任何环境中无缝测试和部署您的应用程序。

提供的 Dockerfile 和 C# 示例作为实施和测试该功能的综合指南。尝试它们以确保您的水印解决方案灵活、可移植且准备好投入生产。

获取免费试用

您可以通过只需在我们的 release downloads website 上下载并安装最新版本,免费试用 GroupDocs.Watermark API。

您还可以获得临时许可证,以测试库的所有功能,而没有任何限制。前往 临时许可证页面 申请临时许可证。

另见

有关更多信息和其他资源,您可能会发现以下链接有用: