首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头集装箱中的spire.pdf

码头集装箱中的spire.pdf
EN

Stack Overflow用户
提问于 2022-03-21 16:50:00
回答 2查看 506关注 0票数 1

我创建了一个处理pdf并将它们转换为pdfa3的应用程序,并将文档转换为facturX。我使用Springboot开发了我的应用程序,它运行得很好。现在我在尝试修改我的申请。我对数据库连接有问题,现在我遇到了以下问题

代码语言:javascript
复制
facturx_1  | 2022-03-21 16:20:55.565 ERROR 1 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is class com.spire.ms.System.Exception: No 'Arial' font found!
...
facturx_1  | com.spire.pdf.conversion.PdfStandardsConverter.toPdfA3B(Unknown Source)
facturx_1  | fr.company.app.shared.Utils.loadPdfA3(Utils.java:88)
facturx_1  | fr.company.app.service.impl.FacturXServiceImpl.createFacturX(FacturXServiceImpl.java:75)
facturx_1  | fr.company.app.ui.controller.FacturXController.createFacturXOutoutStream(FacturXController.java:54)
...
facturx_1  | java.base/java.lang.Thread.run(Unknown Source)] with root cause
facturx_1  |
facturx_1  | com.spire.ms.System.Exception: No 'Arial' font found!
facturx_1  |    at com.spire.pdf.packages.sprZOa.spr  (Unknown Source) ~[spire.pdf.free-5.1.0.jar!/:5.1.0]
...
facturx_1  |    at com.spire.pdf.conversion.PdfStandardsConverter.toPdfA3B(Unknown Source) ~[spire.pdf.free-5.1.0.jar!/:5.1.0]
facturx_1  |    at fr.company.app.shared.Utils.loadPdfA3(Utils.java:88) ~[classes!/:0.0.1-SNAPSHOT]
facturx_1  |    at fr.company.app.service.impl.FacturXServiceImpl.createFacturX(FacturXServiceImpl.java:75) ~[classes!/:0.0.1-SNAPSHOT]
facturx_1  |    at fr.company.app.ui.controller.FacturXController.createFacturXOutoutStream(FacturXController.java:54) ~[classes!/:0.0.1-SNAPSHOT]

我的代码如下:

代码语言:javascript
复制
public static PDDocument loadPdfA3(String pdfData) {
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

    byte[] decoded = Base64.getDecoder().decode(pdfData);
    InputStream inputStream = new ByteArrayInputStream(decoded);

    PdfStandardsConverter converter = new PdfStandardsConverter(inputStream);
    converter.toPdfA3B(outputStream);

    byte[] pdfBytes = outputStream.toByteArray();
    InputStream pdfInputStream = new ByteArrayInputStream(pdfBytes);

    try {
        return PDDocument.load(pdfInputStream);
    } catch (IOException e) {
        throw new AppServiceException(e.getLocalizedMessage());
    }
}

返回异常的行是以下converter.toPdfA3B(outputStream)

我实现了以下docker文件:

代码语言:javascript
复制
# Build stage
FROM maven:3.8.4-openjdk-11 AS build
WORKDIR /app
COPY . /app
RUN mvn clean package -DskipTests

# Package and Run stage
FROM openjdk:11.0.14.1-jre
COPY --from=build app/target/facturx-ws.jar /usr/local/lib/facturx-ws.jar
EXPOSE 8092

ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=docker", "/usr/local/lib/facturx-ws.jar"]

这里也是我的船坞组合:

代码语言:javascript
复制
version: "3"
services:
  facturx:
    container_name: facturx
    image: facturx
    restart: always
    build:
      context: ./
      dockerfile: Dockerfile
    ports:
      - "8081:8080"
    environment:
      MYSQL_HOST: mysqldb
      MYSQL_USER: root
      MYSQL_PASSWORD: root
      MYSQL_PORT: 3306
    #    depends_on:
    #      - mysqldb
    networks:
      - appnetwork

  mysqldb:
    container_name: mysqldb
    image: mysql:8.0.28-oracle
    command: ['mysqld','--character-set-server=utf8','--default-authentication-plugin=mysql_native_password']
    volumes:
      - dbstore:/var/lib/mysql
    ports:
      - "3309:3306"
    environment:
      MYSQL_DATABASE: facturx
      MYSQL_ROOT_PASSWORD: root
    restart: unless-stopped
    networks:
      - appnetwork

volumes:
  dbstore: {}

networks:
  appnetwork:
    driver: bridge
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-04 16:17:07

我更改了我的Dockerfile:

代码语言:javascript
复制
# Build stage
FROM maven:3.8.4-openjdk-11 AS build

WORKDIR /app
COPY ../../facturx-ws/. /app
COPY ../../facturx-ws/src/main/resources/xsd /app/xsd
RUN mvn clean package -DskipTests

# Package and Run stage
FROM openjdk:11.0.14.1-jre
COPY --from=build app/target/facturx-ws.jar /usr/local/lib/facturx-ws.jar
COPY --from=build app/xsd /usr/local/lib/xsd
#COPY app/facturx-ws/src/main/resources/xsd /usr/local/lib/xsd
RUN echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true" | debconf-set-selections
RUN sed -i'.bak' 's/$/ contrib/' /etc/apt/sources.list
RUN apt-get update; apt-get install -y ttf-mscorefonts-installer fontconfig
RUN fc-cache -f -v
#EXPOSE 8092
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=docker", "/usr/local/lib/facturx-ws.jar"]

我通过运行ttf-mscorefonts installer来安装windows字体。

票数 0
EN

Stack Overflow用户

发布于 2022-03-22 02:47:05

例外情况是:没有找到“Arial”字体。请注意,当使用spire.pdf在非windows系统上转换pdf文件时,需要确保文件中所有已使用的字体都已安装,否则应用程序可能会抛出此类异常。这是一个关于尖顶论坛的类似职位

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71561218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档