pdftk와 같은 도구를 사용하여 PDF 파일의 페이지를 다시 정렬할 때 북마크를 유지하는 방법은 무엇입니까?

pdftk와 같은 도구를 사용하여 PDF 파일의 페이지를 다시 정렬할 때 북마크를 유지하는 방법은 무엇입니까?

PDF 파일의 페이지를 다시 정렬하기 위해 책갈피/개요를 사용하고 있는데 pdftk그 후에 출력 파일에서 원본 파일의 책갈피가 손실됩니다.

내 주문은 입니다 pdftk in.pdf cat 1-22 43 23-42 44-end output out.pdf.

페이지 순서를 변경할 때 북마크를 유지하는 방법을 알고 싶습니다.

답변1

이것이 가능한 해결책입니다. 그러나 필요에 맞게 조정해야 합니다.

제 예에서는 PDF의 첫 번째 페이지를 삭제한 다음 올바른 위치를 가리키도록 책갈피를 업데이트해야 했습니다.

  1. in.pdf에서 1페이지를 제거합니다.

    pdftk A=in.pdf cat A2-end output temp.pdf
    
  2. in.pdf에서 in.info 파일을 만듭니다.

    pdftk in.pdf dump_data > in.info
    
  3. 제 경우에는 페이지를 삭제할 예정이므로 in.info를 수정해야 합니다.

    따라서 책갈피가 올바른 페이지를 가리키도록 하려면 BookmarkPageNumber를 1씩 줄여야 합니다.

    PHP 코드:

    $file = "in.info";
    $data = file_get_contents($file);
    
    foreach (explode("\n", $data) as $row) {
        $tmp = explode(": ", $row);
    
        if ($tmp[0] == "BookmarkPageNumber") {
            if ($tmp[1] != "1") $tmp[1]--;
            echo $tmp[0].": ".$tmp[1]."\n";
        } else {
            echo $row."\n";
        }
    }
    
  4. 최종 out.pdf를 만듭니다.

    pdftk temp.pdf update_info in2.info output out.pdf
    

pdftk 2.01을 사용하여 데비안에서 테스트되었습니다.

답변2

독서매뉴얼 페이지조심하세요. update_info생성되는 형식에 관계없이 데이터를 가져옵니다 dump_data. 이는 아마도 페이지 재구성에 따라 조정되어야 할 것입니다. 아닌 것 같은데불가능한, 하지만 자동은 아닙니다.

이것PDFtk 사이트위의 클릭과 북마크 생성/편집만 결과로 제공됩니다. PDF의 북마크 및 재구성 문제에 대해 Google이 말하는 모든 것은 위 작업에 대한 클릭과 그들이 제공하는 경이로움에 대한 서정적 설명과 이 스레드 ;-)입니다.

그래서 할 수 없는 것 같습니다. 의견은 몇 가지 가능성을 제안했지만 시도했을 때 작동하지 않았습니다.

답변3

pdftk in.pdf dump_data > in.info이 작업을 수행 한 다음 update_info생성할 때 매개변수를 추가 해야 합니다 out.pdf. 인용 출처 man pdftk:

update_info <info data filename | - | PROMPT>

단일 PDF 정보 사전에 저장된 메타데이터를 입력 데이터 파일과 일치하도록 변경합니다. 입력 데이터 파일은 dump_data의 출력과 동일한 구문을 사용합니다. ASCII가 아닌 문자는 XML 숫자 엔터티로 인코딩되어야 합니다. PDF의 XMP 스트림에 저장된 메타데이터는 변경되지 않습니다(있는 경우). 예를 들어:

             pdftk in.pdf update_info in.info output out.pdf

  update_info_utf8 <info data filename | - | PROMPT>

입력 인코딩이 UTF-8이라는 점을 제외하면 update_info와 동일합니다.

답변4

qpdf는 적어도 cygwin에서는 매력처럼 작동합니다. 다음 옵션을 사용하지 않는 한 --empty링크는 유지됩니다 .

qpdf input.pdf --pages input.pdf 1,4,5,7-r8,2,3,r7-z -- output.qpdf.pdf

(rN은 끝부터 색인이 생성된 페이지, z는 마지막 페이지)

관련 정보