opus4-repo / opus4-pdf
OPUS 4 PDF 支持库
Requires
- ext-json: *
- iio/libmergepdf: ^4.0
- opus4-repo/opus4-common: ^4.8
- seboettg/citedata: @dev
- ueberdosis/pandoc: *
Requires (Dev)
- opus4-repo/codesniffer: dev-laminas
- opus4-repo/framework: ^4.8
- phpmetrics/phpmetrics: 2.7.4
- phpunit/phpunit: <9
README
此包为 OPUS 4 提供 PDF 支持,例如生成封面或验证文件。
(德语文档)
要求
XeTeX 和 Pandoc
opus4-pdf 包目前需要 XeTeX 和 Pandoc 来生成 PDF 封面。
在基于 Ubuntu / Debian 的 Linux 系统中,可以使用 apt 或 apt-get 安装这些工具。
$ apt-get install texlive-xetex
$ apt-get install pandoc
对于 Pandoc,请确保您安装/使用至少版本 2.17。当前实现未针对较旧的 Pandoc 版本进行测试。
要检查已安装的 Pandoc 版本,请运行
$ pandoc -v
字体
PDF 封面将通过模板文件生成。请注意,包含的 demo-cover.md
文件需要在系统上安装 "Open Sans"(真型或开放型)字体。此字体可在 Google Fonts 库 中以 Apache 许可证 v.2.0 获得许可。或者,可以从 bunny.net 获得 SIL Open Font License 1.1 许可。
Vagrantfile
文件提供了一个示例,说明如何在 Ubuntu/Debian-based Linux 系统上从命令行安装字体。
单元测试
为了运行单元测试,系统还必须满足以下基本要求
- PHP >= 7.1,支持 cURL、DOM 和 MySQL 的 PHP
- MySQL > 5.1
依赖项
其他依赖项在 composer.json
中声明,并可以使用以下方法自动下载和安装
composer install
或
php composer.phar install
这将导致所需的软件包在 vendor
目录中下载和安装。
脚本 bin/install-composer.sh
可用于自动下载 composer.phar
,因此可以使用最新版本。大多数 Linux 发行版中也有 Composer。
与 OPUS 4 的集成
除了上述要求外,为了为您的 OPUS 4 安装启用 PDF 封面生成,请执行以下步骤。
设置配置选项
默认情况下,PDF 封面生成是禁用的。要启用 PDF 封面生成,请将以下配置选项添加到应用程序的 config.ini
文件中
pdf.covers.generate = 1
这将导致 PDF 封面被添加到通过 OPUS 4 前门下载的 PDF 文件之前。
默认情况下,OPUS 4 在 application/configs/covers
目录中查找 PDF 封面模板。您可以通过此配置选项指定不同的目录路径
pdf.covers.path = APPLICATION_PATH "/application/configs/covers"
此包在 test/_files
目录中包含一个简单的示例封面模板,可以作为任何自定义模板的基模板使用。要使用此示例封面模板,请将此模板放入您为 pdf.covers.path
指定的封面目录中,并添加此选项
pdf.covers.default = 'demo-cover.md'
如果您已创建自定义 PDF 封面模板,请将 pdf.covers.default
选项的值替换为您的模板文件名(或相对于封面目录的路径,如果您的模板位于其自己的子目录中)。
您可以选择为某些 OPUS 4 收藏指定不同的封面模板。为此,您可以将特定于收藏的封面模板映射到特定收藏 ID。
collection.12345.cover = 'my-cover.md'
将 12345
替换为您的收藏夹的实际 ID,将 my-cover.md
替换为您收藏夹特定封面模板的实际名称(或其相对路径,如果它位于子目录中)。
显示许可标志
目前,PDF 封面页生成过程只能使用本地可用的图像文件。
默认情况下,应用程序在 public/img/licences
目录中查找许可标志,但您也可以通过 licences.logos.path
选项指定另一个目录
licences.logos.path = APPLICATION_PATH "/public/img/licences"
在指定的许可标志目录中,OPUS 4 预期许可标志的路径与数据库表中许可的 URL 路径相匹配。例如,如果 OPUS 数据库表 document_licences
中的 link_logo
列包含此标志 URL
https://licensebuttons.net/l/by-sa/4.0/88x31.png
OPUS 4 预期该许可标志的本地表示为
public/img/licences/l/by-sa/4.0/88x31.png
运行单元测试
安装了 Vagrant 和 VirtualBox 后,可以包含的 Vagrantfile
用于在虚拟机中安装所有要求和 Composer 依赖项。
然后可以通过以下命令运行单元测试
$ cd opus4-pdf
$ vagrant up
$ vagrant ssh
$ composer test
创建自定义 PDF 封面模板
在应用程序中,包含封面页的下载文件将缓存在 workspace/filecache
目录中(原始文件将不会被修改)。只要存在缓存版本并且文件的内容没有更改,缓存版本将在后续的下载请求中提供。
opus4
控制台工具包含一个 cover:generate
命令,该命令将为给定的文档 ID 生成 PDF 封面。此命令将始终强制重建封面页,这在开发自定义封面模板时非常有用。
要显示命令的帮助,请在控制台中执行此命令
bin/opus4 help cover:generate
要使用当前默认模板为文档生成 PDF 封面,请执行此命令
bin/opus4 cover:generate ID
将 ID
替换为文档的实际 ID。生成的 PDF 封面将使用文档 ID 作为文件名写入当前工作目录。您可以使用 --out
选项指定不同的文件名,例如 "cover.pdf"
bin/opus4 cover:generate --out=cover.pdf ID
最后,您可以使用 --template
选项指定自定义封面模板的路径,例如
bin/opus4 cover:generate --out=cover.pdf --template=./application/configs/covers/my-cover.md ID