PDF에 북마크 추가 및 편집


22

에 의해 책갈피가있는 일부 pdf 파일에서 메타 데이터를 가져 와서 pdf 메타 데이터에서 책갈피 pdftk형식을 관찰합니다. pdftk으로 pdf 파일의 책갈피를 추가하고 편집 할 수 있다고 생각 합니다.

내가 따르는 세 단계는 다음과 같습니다.

  1. 먼저 pdf 파일의 메타 데이터 (있는 경우 책갈피 포함)를 텍스트 파일로 가져옵니다 pdftk in.pdf dump_data > in.info.
  2. 다음으로 메타 데이터 텍스트 파일에 북마크를 추가 in.info하여

    InfoKey: Creator
    InfoValue: PScript5.dll Version 5.2
    InfoKey: Title
    InfoValue: SSReader Print.
    InfoKey: Producer
    InfoValue: Acrobat Distiller 7.0 (Windows)
    InfoKey: Author
    InfoValue: Administrator
    InfoKey: ModDate
    InfoValue: D:20050605073244+08'00'
    InfoKey: CreationDate
    InfoValue: D:20050605073244+08'00'
    PdfID0: 591a87c91dc76881fdf2ccf3811e72a5
    PdfID1: 6b6ab11de8824e438e4f5eb1d85ec72
    NumberOfPages: 400
    PageLabelNewIndex: 1
    PageLabelStart: 1
    PageLabelNumStyle: DecimalArabicNumerals
    

    InfoKey: Creator
    InfoValue: PScript5.dll Version 5.2
    InfoKey: Title
    InfoValue: SSReader Print.
    InfoKey: Producer
    InfoValue: Acrobat Distiller 7.0 (Windows)
    InfoKey: Author
    InfoValue: Administrator
    InfoKey: ModDate
    InfoValue: D:20050605073244+08'00'
    InfoKey: CreationDate
    InfoValue: D:20050605073244+08'00'
    PdfID0: 591a87c91dc76881fdf2ccf3811e72a5
    PdfID1: 6b6ab11de8824e438e4f5eb1d85ec72
    NumberOfPages: 400
    BookmarkBegin
    BookmarkTitle: Front cover
    BookmarkLevel: 1
    BookmarkPageNumber: 1
    BookmarkBegin
    BookmarkTitle: About the Author
    BookmarkLevel: 1
    BookmarkPageNumber: 5
    BookmarkBegin
    BookmarkTitle: Title page
    BookmarkLevel: 1
    BookmarkPageNumber: 6
    BookmarkBegin
    BookmarkTitle: Copyright page
    BookmarkLevel: 1
    BookmarkPageNumber: 7
    BookmarkBegin
    BookmarkTitle: Foreword
    BookmarkLevel: 1
    PageLabelNewIndex: 1
    PageLabelStart: 1
    PageLabelNumStyle: DecimalArabicNumerals
    
  3. 그런 다음에 의해 편집 된 메타 데이터를 pdf 파일에 다시 넣으려고합니다 pdftk in.pdf update_info in.info output out.pdf.

그러나 out.pdfevince 또는 Adobe Reader에서 새 pdf 파일 을 열면 새 pdf 파일 에 책갈피가 없습니다.

나는 새로운 PDF 파일에서 메타 데이터를 얻을 경우 out.pdf로를 pdftk out.pdf dump_data > out.info,에는 북마크가 없을 것입니다 out.info. 북마크가 성공적으로 추가되지 않은 것 같습니다.

실수가 있는지 궁금합니다. pdftk가 아닌 pdf 파일의 책갈피를 어떻게 추가하고 편집해야합니까?


1
이 작은 그래픽 도구는 저에게 효과적이었습니다. (PDF Mod 0.9.1) apps.fedoraproject.org/packages/pdfmod
abhijit

답변:


12

버전 1.45 (2012-12-06)와 같이 pdftk는 update_info 명령을 통해 북마크를 수정할 수 있습니다.

이제 update_info를 사용하여 PDF 책갈피를 추가하거나 변경할 수 있습니다.

경유 : http://www.pdflabs.com/docs/pdftk-version-history/


3
이것은 나에게 매우 효과적이었습니다. BookmarkBegin각 책갈피 항목이 누락되기 전에 태그 위의 입력 파일에이를 추가해야합니다 .
danielp

4

jPDFtweak (Java, 그래서 유닉스 / 리눅스에서 실행 됨)는 북마크를 변경할 수 있지만, 스크립트로 스크립트를 작성할 수 있는지는 모르겠습니다.

스크립팅의 경우, 유일한 유닉스 / 리눅스 옵션은 pdfpages 패키지와 함께 pdflatex 일 것입니다. 그러나 아직 LaTeX 사용자가 아닌 경우 학습 곡선입니다.

편집 : 실제로 고스트 스크립트로 가능 할 수 있습니다 : 여기 또는 여기 또는 여기를 참조 하십시오


4

여전히 유닉스 스크립트를 고수한다면

  1. 에서 덤프 된 북마크 데이터 추출 pdftk
  2. 덤프 된 책갈피 데이터를 pdfmarks 형식으로 변환하기위한 하나의 추가 스크립트를 작성하십시오 gs.
  3. gs스크립트를 사용 하여 pdfmarks와 병합

에서 봐 http://blog.tremily.us/posts/PDF_bookmarks_with_Ghostscript/ 스크립트 pdf-merge.py(또는 내가) 원하는 정확히 않습니다.

pdf-merge.py --output=merged.pdf input1.pdf input2.pdf

그의 스크립트에서 약간의 개선이 이루어질 수 있습니다

  1. 유니 코드 처리
  2. 북마크 파일을 출력하여 사람들도 조정할 수 있습니다.

어쨌든 작동해야합니다.


하나의 공감! 감사! 나는 당신의 스크립트를 기대하고 있습니다!
Tim

링크가 작동하지 않는 것 같습니다. 당신은 그것을 고칠 수 있습니까?
물고기 모니터

4

pdftk는 (올바른 구문으로) 올바른 도구입니다 :

BookmarkBegin
BookmarkTitle: Chapter 1
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
BookmarkTitle: Paragraph 1.1
BookmarkLevel: 2
BookmarkPageNumber: 1

2

케일럽,

내가 이해하는 한 PDF 사양에 따른 북마크는과 같은 진단 도구를 통해 삽입 할 수 없습니다 pdftk. 존재하지 않는 챕터 및 책갈피 랜딩 앵커를 참조하도록 메타 데이터를 업데이트하면 작동하지 않을 수 있으며 PDF가 일관성이 없거나 열리지 않을 수도 있습니다.

이 튜토리얼에 따라 제안하는 것을 수행하기 위해 java + iText 라이브러리를 사용 했지만 매일 수백 개의 PDF를 처리하므로 자동화해야했습니다. 일회성 작업을 수행하는 경우 Adobe Acrobat에서이 작업을 수행 할 수 있어야합니다.


2

이 모든 좋은 답변을 요약하면 다음과 같습니다.

GitHub 에는 다양한 PDF 북마크 형식을 변환 할 수있는 bmconverter 프로젝트 가 있습니다. jpdftweak을 사용하면 jpdftweak 내에서 모든 작업을 수행 할 수 있으므로 pdftk 출력을 cpdf로 변환 할 필요는 없지만 pdftk 출력을 jpdftweak 형식으로 변환 할 수 있습니다.

불행히도 pdfmarks는 프로젝트에서 지원되지 않지만 다행히 pdftk 출력을 pdfmarks로 변환 할 수있는 스크립트를 bmconverter 문제에 게시 했습니다. 고스트 스크립트 배치 옵션은 옵션입니다


2

pdftk북마크 형식은 약간 지루합니다. 대신 내가 사용하는 내 자신의 스크립트를 생성 bash, sed, pdftkpython3. 이 저장소에서 확인하십시오 : https://github.com/SiddharthPant/booky

이제 bkmrks.txt1000 페이지의 pdf를 작성하는 데 5 분 밖에 걸리지 않는 텍스트 파일 ( )을 만들 수 있습니다 .

{
  Title1, 1
  Title2, 2
  {
    Subtitle1, 3
    Subtitle2, 4
    {
      SubSubtitle1, 5
      ...
    }
  }
}

그런 다음 내 스크립트를 사용하십시오.

./booky.sh pdf_file.pdf bkmrks.txt

pdf_file_new.pdf그러면 내 북마크 가 포함 된 pdf ( )가 자동으로 생성 됩니다.


1

다음 BookmarkBegin과 같이 각 북마크 항목 앞에 추가하십시오 .

BookmarkBegin
BookmarkTitle: Front cover
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
    ⋮

0

1 단계에서 사용한 리디렉션은 update_info가 올바르게 작동하지 않게합니다. 대신 출력 파일을 pdftk로 지정해야합니다.

pdftk in.pdf dump_data output in.info

비슷한 질문 에서이 답변을 참조하십시오 : https : //.com/a/30308964/3158933

리디렉션을 사용하여 만든 파일의 파일 크기가 약간 더 커서 update_info 명령을 실행할 때 pdftk가 "경고 : LoadDataFile ()의 예기치 않은 경우 1; 계속"메시지를 표시합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.