여러 개의 PDF를 하나의 문서로 컴파일하려고 합니다. ls
파일이 내가 있는 디렉토리에 있고 읽을 수 있음을 보여줍니다( -rw-r--r--
). 하지만 실행하려고 하면 pdftk 2017.pdf cat output test.pdf
다음과 같은 오류가 발생합니다.
Error: Unexpected Exception in open_reader()
java.io.FileNotFoundException: 2017.pdf (Permission denied)
at gnu.java.nio.channels.FileChannelImpl.open(libgcj.so.16)
at gnu.java.nio.channels.FileChannelImpl.<init>(libgcj.so.16)
at gnu.java.nio.channels.FileChannelImpl.create(libgcj.so.16)
at java.io.RandomAccessFile.<init>(libgcj.so.16)
at pdftk.com.lowagie.text.pdf.RandomAccessFileOrArray.<init>(pdftk)
at pdftk.com.lowagie.text.pdf.PRTokeniser.<init>(pdftk)
at pdftk.com.lowagie.text.pdf.PdfReader.<init>(pdftk)
at pdftk.com.lowagie.text.pdf.PdfReader.<init>(pdftk)
Error: Failed to open PDF file:
2017.pdf
Errors encountered. No output created.
Done. Input errors, so no output created.
작업에 더 많은 파일을 추가하면 각 파일에 대해 오류가 발생합니다.
명령줄에서 PDF 이름을 바꿀 수 있지만 mv 2017.pdf foo.pdf
동일한 오류가 발생합니다.Error: Unexpected Exception in open_reader() java.io.FileNotFoundException: foo.pdf (Permission denied)
예를 들어 존재하지 않는 파일을 호출하려고 하면 pdftk 123.pdf cat output test.pdf
다른 오류가 발생합니다.
Error: Unable to find file.
Error: Failed to open PDF file:
123.pdf
Errors encountered. No output created.
Done. Input errors, so no output created.
tail 2017.pdf
2017.pdf의 마지막 몇 줄 도 표시됩니다.
<<
/Info 63 0 R
/ID [<cc59759cedaf07420bbe3250ba5d8971><f259ad128310d106c7aa80b673c4bd70>]
/Root 62 0 R
/Size 64
>>
startxref
42883
%%EOF
을 사용하여 파일을 보고 읽을 수 있는데 왜 읽을 tail
수 없나요 ?pdftk
답변1
긴 이야기 짧게
Snaps 접근 관리는질문.
이 문제를 해결하려면 다음을 수행할 수 있습니다.
- $HOME 폴더에서 작업하세요. 기호 링크는 작동하지 않습니다.
- 배포판이 아닌 다른 소스에서 pdftk를 설치하십시오. 예를 들어
ppa:malteworld/ppa
버전 3.0.0 이 있습니다pdftk-java
.
원래 답장
나는 같은 문제를 가지고있다. 저는 USB 드라이브의 폴더에서 이 작업을 수행했습니다. 실제로 내 홈 디렉토리의 하위 폴더에서 이 작업을 수행하면 효과가 있습니다.
/tmp 아래의 하위 폴더에서 작업을 시도했지만 작동하지 않았기 때문에 혼란스럽습니다("PDF 파일을 열 수 없습니다"라는 덜 자세한 오류가 있었습니다). /mnt 아래에 마운트된 보조 디스크의 하위 폴더에서 시도하는 경우에도 마찬가지입니다.
나는 이것이 스냅샷의 제한과 관련이 있을 수 있다고 생각합니다(저는 최신 Ubuntu 18.04.3을 사용하고 있습니다). 하지만 저는 스냅샷을 다뤄본 경험이 거의 없어서 더 이상 탐구할 수가 없습니다.
그렇다면 이는 좋지 않습니다. 왜냐하면 Ubuntu 사용자가 홈 폴더가 아닌 다른 곳에서 pdftk를 사용하는 것을 방지하기 때문입니다. 예를 들어. USB 드라이브, 추가 디스크, 공유 네트워크 드라이브.
(죄송합니다. 댓글에 답변을 드릴 수 없습니다. 평판이 충분하지 않습니다...)
답변2
의 일부로 게시된 또 다른 솔루션GitHub 문제 #7pdftk 프로젝트의 경우:
sudo ln -s /snap/pdftk/current/usr/bin/pdftk /usr/bin/pdftk
더 간단하지만 sudo
권한이 필요합니다. 이것은 Ubuntu 18.04에서 작동합니다.
동일한 GitHub 문제에서 다른 사용자가 언급했습니다.
sudo ln -s /snap/pdftk/current/usr/bin/pdftk /usr/bin/pdftk
sudo rm /snap/bin/pdftk
sudo ln -s /usr/bin/pdftk /snap/bin/pdftk
이는 본질적으로 동일하지만 /snap/bin/pdftk
심볼릭 링크로 대체됩니다 /usr/bin/pdftk
( 심볼릭 링크가 앞에 /snap/bin
있는 경우 /usr/bin
유용함 $PATH
).
답변3
/snap과 다른 드라이브에 있는 파일의 경우 나에게 도움이 된 솔루션은 pdftk 액세스를 이동식 미디어로 확장하는 것이었습니다.
snap connect pdftk:removable-media
답변4
나아니요스냅(아치 저장소)에서 설치했지만 여전히 이상한 내용이 표시됩니다. 이는 귀하와 동일한 권한 오류가 아니며 존재하지 않는 파일을 로드하려고 할 때 표시되는 오류입니다. 다행히도 pdftk
.stdin을 사용하여 stdin에서 데이터를 읽을 수 있습니다 -
. 파일이 하나뿐이므로 cat
넣어도 됩니다.
cat 2017.pdf | pdftk - cat output test.pdf