我在 Dolphin 服务菜单文件中有这一行,其中包含许多其他用于 PDF 处理的命令:
Exec=bash -c 'f="%u"; ocrmypdf "$f" "${f%.pdf}_ocr.pdf";'
它的优点是提供 形式的输出文件MY_PDF_ocr.pdf
,从而保留输入文件的名称。但我更愿意在终端 ( konsole
) 中运行该命令,以便我看到该进程。
为此,我可以使用以下行:
Exec=konsole --noclose -e ocrmypdf "%u" ocr_en.pdf
但输出不保留输入的名称。
一行像
Exec=konsole --noclose -e ocrmypdf "%u" "${%u}_ocr.pdf"
什么也没做。
如何调整ocrmypdf
以便命令在 konsole 中运行并且输出包含输入的名称?
答案1
经过几次尝试(和错误)后,像这样的简单命令ocrmypdf %u %u_ocr.pdf
将给出一个具有奇怪名称(包括扩展名)的表单的输出文件INPUT.pdf_ocr.pdf
,并在服务菜单中:
Exec=konsole --noclose -e ocrmypdf %u %u_ocr.pdf
但是一个更干净的解决方案(受到我可以从中选择的启发这里(关于脚本的正确格式)和这里(bash
在终端中使用此类脚本)似乎是为该ocr_EN.sh
OCR 命令创建一个单独的脚本(例如 ) - 形式(对于英语):
#!/bin/sh
for f in "$@"
do
ocrmypdf "$f" "${f%.pdf}_ocr_EN.pdf"
done
使其可执行,然后使用以下命令(此处包含在服务菜单文件的行中):
konsole --noclose -e bash /PATH/TO/ocr_EN.sh %f
它给出了一个名为的输出INPUT_ocr_EN.pdf
(扩展名不出现两次)。