【问题标题】:openhtmltopdf can't load the font while running from docker container从 docker 容器运行时,openhtmltopdf 无法加载字体
【发布时间】:2023-02-15 06:56:23
【问题描述】:

我有以下设置:

@Value("classpath:fonts/Poppins-Regular.ttf")
private lateinit var regularFont: org.springframework.core.io.Resource

...

private val regular: FSSupplier<InputStream> by lazy {
   FSSupplier<InputStream> { regularFont.inputStream }
}

...

val processor = BufferedImagePageProcessor(BufferedImage.TYPE_INT_RGB, 1.0)
Java2DRendererBuilder().apply {
     withHtmlContent(html, "https://some.org")
     useFastMode()
     toSinglePage(processor)
     useEnvironmentFonts(false)
     useFont(regular, "Poppins")
 }.run {
     try {
         runFirstPage()
     } catch (e: Throwable) {
         log.error("Could not generate preview", e)
     }
}

如果我在本地运行该应用程序,它会完美运行,但是一旦从 docker 容器执行相同的代码,它就会抛出以下警告并且不会生成任何图像:

com.openhtmltopdf.exception WARNING:: Couldn't load font. Please check that it is a valid truetype font. => java.io.IOException:: Problem reading font data.

有任何想法吗?

【问题讨论】:

    标签: docker openhtmltopdf


    【解决方案1】:

    不确定它是否仍未得到答复,但我会检查您的 docker 文件。您可能必须将字体文件夹复制到 docker 容器,然后将您的 application.yml/settings 指向运行时从该位置读取的内容。 我假设您在 srcmain 中拥有所有字体文件 (.ttf) 资源文件夹。 这是一个用于复制字体文件夹的示例 docker 文件:

    FROM adoptopenjdk/openjdk11:alpine-jre
    WORKDIR /src/
    COPY . .
    RUN mvn clean package -DskipTests
    WORKDIR /assets/
    RUN jar xf /src/target/*.jar  --> this step extracts the jar file which contains the classesont folder
    WORKDIR /app
    ENV SPRING_PROFILES_ACTIVE cloud
    COPY --from=builder /assets/ /app/ --> this step copies the classesonts to your docker container app folder
    COPY --from=builder /src/target/*.jar test-application.jar
    

    【讨论】:

      猜你喜欢
      • 2013-07-04
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-15
      相关资源
      最近更新 更多