Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用pdftk bash脚本将pdf文件输出为一个pdf_Linux_Bash_Pdftk_Filelist - Fatal编程技术网

Linux 使用pdftk bash脚本将pdf文件输出为一个pdf

Linux 使用pdftk bash脚本将pdf文件输出为一个pdf,linux,bash,pdftk,filelist,Linux,Bash,Pdftk,Filelist,我有一个包含PDF文件列表的bash脚本。 打印机输出根据注释/取消注释文件要求进行定制(参见下面的示例脚本)。 我希望添加到这一点,以便我可以选择使用pdftk(或纸质打印机)将所有选定的文件打印到单个pdf。我熟悉pdftk,但不是bash 任何人都可以指定bash代码作为一个PDF输出吗 多谢各位 !/bin/bash # Print document pack # Instructions # ls > print.txt Generate

我有一个包含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
大概是这样的:

#!/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[*]}")"

你看过pdftk的手册页了吗?嗨,比芬。是的,我有。虽然不是bash,但我对pdftk很熟悉。bash脚本是从哪里来的?文件名是这样显示的,还是分配给了某个变量?@Biffen我还没有bash脚本。我所得到的我已经粘贴到上面修改过的问题中…尝试了
code
pdftk$files output newfile.pdf
code
以及
code
echo pdftk$files output newfile.pdf
code
和一些变体。我认为问题在于通过bash将连接的字符串转义到pdftkworks,这对于没有空格的pdf文件名来说是完美的。所有的文件名中都有空格,比如“doc1.pdf”,所以需要能够通过bash传递。非常感谢。对尝试过编辑,看起来很棘手。很高兴见到你!!我该怎么处理。。。。“bash-c…”命令。我不太明白。谢谢大家!@user1062153将
echo“${files[*]}”
替换为
bash-c“pdftk$(echo“${files[*]}”)-o output.pdf“
(或任何
pdftk
命令)。引用确实很棘手,但我已经测试过了,它似乎工作正常。太棒了!谢谢你,比芬。不知道没有你的帮助我会怎么做!