%20%E5%91%BD%E4%BB%A4%E5%9C%A8%E7%BB%88%E7%AB%AF%E4%B8%AD%E8%BF%90%E8%A1%8C%E5%B9%B6%E5%9C%A8%E8%BE%93%E5%87%BA%E5%90%8D%E7%A7%B0%E4%B8%AD%E5%8C%85%E5%90%AB%E8%BE%93%E5%85%A5%E5%90%8D%E7%A7%B0.png)
我在 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
(扩展名不出现两次)。