【问题标题】:Output list of pdf files as one pdf using pdftk bash script使用 pdftk bash 脚本将 pdf 文件列表输出为一个 pdf
【发布时间】:2014-04-08 09:53:18
【问题描述】:

我有一个包含 PDF 文件列表的 bash 脚本。 打印机输出是通过注释/取消注释文件要求来定制的(参见下面的示例脚本)。 我希望对此进行补充,以便我可以选择使用 pdftk(或纸质打印机)将所有选定的文件打印到单个 pdf 中。我熟悉 pdftk 虽然不熟悉 bash。

谁能指出 bash 代码以 PDF 格式输出?

谢谢

!/bin/bash

# Print document pack

# Instructions
#   ls > print.txt                  Generate the file list into a file 
#   -o sides=two-sided-long-edge -#1        Prints two sided long edge, one copy
#   -o sides=two-sided-long-edge -#2        Prints two sided long edge, two copies
#   -o page-ranges=1 -#1                Print first page only, one copy
#   -o page-ranges=1-2,5-7 -#1          Print pages 1-2 & 5-7 only, one copy

#   -lt x                       sets number of packs to be printed
#   while [  $COUNTER -lt  ***** 1 ****** ]; do     NUMBER INSIDE STARS INDICATES NUMBER PACKS TO PRINT

COUNTER=0

while [  $COUNTER -lt 1 ]; do

    lpr "doc01.pdf"

    lpr "doc02.pdf"

    lpr -o sides=two-sided-long-edge -#1 "doc03.pdf"

#   lpr "doc04.pdf"

#   lpr "doc05.pdf"

    lpr -o sides=one-sided-long-edge -o page-ranges=1 -#1 "doc06.pdf"

#   lpr "doc07.pdf"

    lpr -o sides=two-sided-long-edge -#2 "doc08.pdf"

    lpr "doc09.pdf"

    lpr "doc10.pdf"

let COUNTER=COUNTER+1 
done

【问题讨论】:

  • 你看过 pdftk 的手册页吗?
  • 嗨@Biffen。是的,我有。我熟悉 pdftk 虽然不熟悉 bash。
  • bash 脚本从何而来?文件名是这样显示的,还是分配给某个变量?
  • @Biffen 我还没有 bash 脚本。我得到了什么我已经粘贴到上面修改过的问题中......

标签: linux bash pdftk filelist


【解决方案1】:

类似这样的:

#!/bin/bash

files=()

add() {
  files+=("'""$1""'")
}

add "file1.pdf"

#add "file2.pdf"

add "file3.pdf"

add "file with     spaces.pdf"

echo "${files[*]}"

当然,用正确的pdftk 命令替换echo。


编辑 2

这个新“版本”将更好地处理包含空格的文件名。


编辑 3

要将文件交给命令,看起来像下面这样可以解决问题:

bash -c "stat $(echo "${files[*]}")"

【讨论】:

  • 试过codepdftk $files output newfile.pdfcode 以及codeecho pdftk $files output newfile.pdfcode 和一些变种。我认为问题与通过 bash 将连接的字符串转义到 pdftk 有关
  • 完美适用于没有空格的 pdf 文件名。所有文件名中都有空格,例如“doc 1.pdf”,因此需要能够通过 bash 传递。谢谢!
  • 是的...尝试编辑,似乎很棘手。很高兴你在身边!我应该如何处理 .... “bash -c ...” 命令。不确定我是否跟随。谢谢!
  • @user1062153 将echo "${files[*]}" 替换为bash -c "pdftk $(echo "${files[*]}") -o output.pdf"(或任何pdftk 命令)。引用确实很棘手,但我已经对此进行了测试,它似乎工作正常。
  • 太棒了!谢谢@Biffen。不知道没有你的帮助我会怎么做!
猜你喜欢
  • 2013-05-15
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2017-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多