PDF 파일에 북마크 추가 및 편집

PDF 파일에 북마크 추가 및 편집

북마크가 포함된 일부 PDF 파일에서 메타데이터를 가져와서 pdftkPDF 메타데이터의 북마크 형식을 관찰했습니다. 그래서 pdf 를 사용하면 pdftkpdf 파일의 북마크를 추가하고 편집할 수 있을 것 같습니다.

나는 다음 세 단계를 따릅니다.

  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.

하지만 evince 또는 adobe reader에서 새 pdf 파일을 열면 out.pdf새 pdf 파일에 북마크가 없습니다.

out.pdf새 PDF 파일의 메타데이터를 얻으면 pdftk out.pdf dump_data > out.info거기에 북마크가 없을 것입니다 out.info. 북마크가 성공적으로 추가되지 않은 것 같습니다.

혹시 버그가 있는 건지 궁금합니다. pdftk를 통하지 않고 PDF 파일에 북마크를 어떻게 추가하고 편집합니까?

답변1

버전 1.45(2012-12-06)부터 pdftk에서는 update_info 명령을 통해 북마크 수정을 허용하는 것 같습니다.

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

통과하다: http://www.pdflabs.com/docs/pdftk-version-history/

이는 이제 원래 시도했던 것과 동일한 명령을 실행하여 북마크를 업데이트할 수 있음을 의미합니다.

pdftk in.pdf update_info in.bookmarks output out.pdf

답변2

pdftk북마크 형식은 작성하기가 약간 지루합니다. 대신 bash, sed, 및 을 사용하여 pdftk나만의 스크립트를 만들었습니다 python3. 이 저장소에서 확인해 보세요.https://github.com/SiddharthPant/booky

이제 이런 텍스트 파일( bkmrks.txt)을 만들 수 있고, 1000페이지짜리 PDF도 단 5분 만에 작성할 수 있습니다.

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

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

./booky.sh pdf_file.pdf bkmrks.txt

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

답변3

아직도 유닉스 스크립트 사용을 고집한다면

  1. 덤프된 북마크 데이터 추출pdftk
  2. 덤프된 북마크 데이터를 gsGhostscript 명령을 허용하는 pdfmarks 형식으로 변환하는 추가 스크립트를 작성하십시오.
  3. 스크립트를 사용하여 gsPDFmarks와 함께 병합

보세요http://blog.tremily.us/posts/PDF_bookmarks_with_Ghostscript/이 스크립트는 pdf-merge.py당신(또는 내가) 원하는 것을 정확히 수행합니다.

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

그의 스크립트는 약간의 개선이 필요할 수 있습니다.

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

어쨌든 작동해야 해

답변4

jPDF 조정(Java, Unix/Linux에서 실행) 북마크를 변경할 수 있지만 이를 사용하여 스크립트를 작성할 수 있는지는 모르겠습니다.

스크립팅의 경우 유일한 기본 Unix/Linux 옵션은 pdflatex 및 pdfpages 패키지인 것 같습니다. 하지만 아직 LaTeX 사용자가 아니라면 학습 곡선이 있습니다.

편집: 실제로 Ghostscript를 사용하면 가능합니다.이봐또는여기또는 여기

관련 정보