긴 이야기 짧게

긴 이야기 짧게

여러 개의 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.pdf2017.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

관련 정보