You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Lambda的Node.js镜像中安装pdf2htmlEX?

解决Node.js Lambda容器镜像中运行pdf2htmlEX的可行方案

方案一:基于AWS Lambda Node.js镜像手动编译pdf2htmlEX

AWS Lambda Node.js镜像基于Amazon Linux 2023,不支持apt-get,但可通过dnf安装编译依赖,手动编译pdf2htmlEX:

# 基础镜像
FROM public.ecr.aws/lambda/nodejs:20

# 安装编译依赖
RUN dnf install -y git make gcc-c++ poppler-devel cmake boost-devel libpng-devel jpeg-devel tiff-devel fontconfig-devel freetype-devel

# 克隆pdf2htmlEX源码并编译安装
RUN git clone --depth=1 https://github.com/coolwanglu/pdf2htmlEX.git /tmp/pdf2htmlEX \
    && mkdir -p /tmp/pdf2htmlEX/build \
    && cd /tmp/pdf2htmlEX/build \
    && cmake .. \
    && make \
    && make install

# 清理编译依赖,减小镜像体积
RUN dnf remove -y git make gcc-c++ cmake && dnf clean all && rm -rf /tmp/pdf2htmlEX

# 安装Lambda运行时接口客户端
RUN npm install aws-lambda-ric

# 复制Lambda函数代码
COPY app.js ${LAMBDA_TASK_ROOT}

# 设置Lambda启动命令
CMD ["app.handler"]

方案二:用Amazon Linux 2作为基础镜像构建完整环境

Amazon Linux 2支持yum,能更方便处理依赖,同时兼容Lambda运行时:

# 基础镜像
FROM amazonlinux:2

# 安装Node.js 20
RUN curl -fsSL https://rpm.nodesource.com/setup_20.x | bash - \
    && yum install -y nodejs

# 安装pdf2htmlEX依赖及编译工具
RUN yum install -y git make gcc-c++ poppler-devel cmake boost-devel libpng-devel libjpeg-turbo-devel libtiff-devel fontconfig-devel freetype-devel

# 编译安装pdf2htmlEX
RUN git clone --depth=1 https://github.com/coolwanglu/pdf2htmlEX.git /tmp/pdf2htmlEX \
    && mkdir -p /tmp/pdf2htmlEX/build \
    && cd /tmp/pdf2htmlEX/build \
    && cmake .. \
    && make \
    && make install

# 清理依赖
RUN yum remove -y git make gcc-c++ cmake && yum clean all && rm -rf /tmp/pdf2htmlEX

# 安装Lambda运行时接口客户端和模拟器(可选,本地调试用)
RUN npm install aws-lambda-ric aws-lambda-runtime-interface-emulator

# 设置Lambda工作目录
WORKDIR /var/task

# 复制函数代码
COPY app.js .

# 设置Lambda启动命令
CMD ["npx", "aws-lambda-ric", "app.handler"]

方案三:预编译pdf2htmlEX二进制文件(推荐,减小镜像构建时间)

在本地或CI环境中编译好适配Amazon Linux的pdf2htmlEX二进制,直接复制到AWS Lambda Node.js镜像中:

  1. 本地编译二进制(需在Amazon Linux 2/2023环境执行,或用Docker模拟):
# 启动Amazon Linux 2容器
docker run -it --rm amazonlinux:2 bash

# 在容器内执行编译步骤
yum install -y git make gcc-c++ poppler-devel cmake boost-devel libpng-devel libjpeg-turbo-devel libtiff-devel fontconfig-devel freetype-devel
git clone --depth=1 https://github.com/coolwanglu/pdf2htmlEX.git /tmp/pdf2htmlEX
mkdir -p /tmp/pdf2htmlEX/build
cd /tmp/pdf2htmlEX/build
cmake ..
make
# 将二进制文件复制到本地
docker cp <container-id>:/usr/local/bin/pdf2htmlEX ./pdf2htmlEX
  1. 构建Lambda镜像:
FROM public.ecr.aws/lambda/nodejs:20

# 复制预编译的pdf2htmlEX二进制
COPY pdf2htmlEX /usr/local/bin/
RUN chmod +x /usr/local/bin/pdf2htmlEX

# 安装Lambda运行时接口客户端
RUN npm install aws-lambda-ric

# 复制函数代码
COPY app.js ${LAMBDA_TASK_ROOT}

CMD ["app.handler"]

关键注意事项

  • pdf2htmlEX依赖的字体文件:Lambda环境默认字体有限,若转换PDF时出现字体问题,需将所需字体复制到镜像的/usr/share/fonts目录。
  • 镜像大小优化:编译完成后务必清理编译依赖和源码,避免镜像体积过大影响Lambda冷启动速度。

内容的提问来源于stack exchange,提问作者bytrangle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 06:36:04