我在使用 DomPDF 和 Laravel Vapor 获取自定义字体时遇到一些问题。 (本地字体有效)
这些是我的 CSS 字体定义(字体存储在 public/fonts 中)
@font-face {
font-family: caveat;
font-style: normal;
font-weight: normal;
src: url('{{ public_path('fonts/caveat.ttf') }}') format('truetype');
}
@font-face {
font-family: Arial;
font-style: normal;
font-weight: normal;
src: url('{{ public_path('fonts/Arial.ttf') }}') format('truetype');
}
这是我的dockerfile
FROM laravelphp/vapor:php81
RUN apk add imagemagick imagemagick-dev php81-pecl-imagick \
&& pecl install imagick \
&& docker-php-ext-enable imagick
COPY . /var/task
本地这些字体
Arial
和 CaveAt
在 PDF 中渲染得很好。但是,部署到暂存后,PDF 中的字体会回退为 Helvetica
我可能需要向 dockerfile 添加一些命令才能使其正常工作。我的问题是:什么命令?
关于vapor的事情是公共目录中的所有资产文件都将被移动到vapor创建的s3存储桶中,以将其与cloudfront一起用作CDN。因此,除非您在 Vapor 配置文件中的公共文件中定义文件,否则您无法在域中找到公共文件。
因此您有两种选择来解决此问题:
我强烈建议不要使用第二个选项,因为它会导致性能不一致的问题,因为
lambda function
冷启动会使网站变慢,因此花费更多的钱。
Cloudfront 也是一个 CDN,因此很高兴将其用于资产文件。
要使用 cloudfront 修复它,只需删除 url 中的
public_path
并检查该文件是否确实存在于您的存储桶中。
更多信息: https://docs.vapor.build/projects/deployments.html#urls-within-css