아래와 같은 PDF 파일이 있습니다.
----------
||----| |
||----| |
| |
| |
| |
|________|
다음 명령의 도움으로
$ convert -density 300 -quality 100 -crop 0x50% in.pdf out.png
$ ls
in.pdf, out-0.png, out-1.png
$ montage -mode concatenate -tile 1x out-0.png out-0.png out.pdf
$ ls
in.pdf, out-0.png, out-1.png out.pdf
이런 파일이 나오네요
----------
||----| |
||----| |
| |
||----| |
||----| |
|________|
그런 다음 인쇄한 다음 PDF 문서를 삭제해야 합니다.
주어진 파일 목록을 사용하여 동일한 효과를 얻으려면 어떻게 해야 합니까?
$ cat list-of-pdfs.txt
file 1.pdf
file 2.pdf
file 3.pdf
...
답변1
단일 파일에 대해 작동하여 결과를 in.pdf
생성하는 한 쌍의 명령이 있습니다 .out.pdf
convert -density 300 -quality 100 -crop 0x50% in.pdf out.png montage -mode concatenate -tile 1x out-0.png out-0.png out.pdf
여러 파일에 변경 사항을 적용하기 때문에 고정된 이름을 사용할 수 없으므로 소스 파일이 제공되었다고 가정하고 대상 파일 이름을 생성합니다.
file=in.pdf # in.pdf
dest=${file%.pdf}-out.pdf # in-out.pdf
convert -density 300 -quality 100 -crop 0x50% "$file" "$dest"
montage -mode concatenate -tile 1x out-0.png out-0.png "$dest"
처리하려는 각 파일의 이미지가 출력과 일치하도록 동일해야 하는지 또는 이름이 지정 되어야 하는지 모르므 out-0.png
로 이를 상수로 두겠습니다.
이제 각 파일에 효과를 차례로 적용해야 합니다. 일반적인 구조는 for
루프이지만 목록에 파일이 있으므로 루프를 사용합니다 while
.
while IFS= read -r file
do
# Apply your changes to the "$file"
#
dest="${file%.pdf}-out.pdf"
echo "Processing $file into ${dest##*/}" >&2
convert -density 300 -quality 100 -crop 0x50% "$file" "$dest"
montage -mode concatenate -tile 1x out-0.png out-0.png "$dest"
done <list-of-pdfs.txt