2011-11-09 4 views
7

GhostScript와 PDF 결합 : 페이지 번호가 수정 된 원본 책갈피 사용

gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=book.pdf -f front-matter.pdf fulltext-0.pdf fulltext-1.pdf back-matter.pdf 

을 사용하여 일련의 PDF 문서에서 단일 PDF 문서를 만듭니다. 새로운 내용의 표를 포함시키고 pdfmark mechanism를 사용하여 포함 시켰습니다. 그런 다음 원본 파일에 이미 책갈피가 있음을 알게됩니다. 그러나 결합 된 문서의 파일 번호가 아니라 원본 페이지 번호를 참조합니다.

두 가지 가능한 솔루션을 찾고 있습니다. 고유 북마크를 제거하거나 원래 북마크를 사용하지만 어떻게 든 자신의 페이지 참조를 업데이트하십시오 ...

답변

4

은 너무 자주 경우, 누군가가

unfolding disasters

이 매우 문제에 a solution을 일했다 ... 전에 같은 길을 걸어왔다. 그의 python script pdf-merge.pypdftkdump_data 스위치를 먼저 호출하여 모든 pdfmark 정보를 검색합니다. 그런 다음 병합 된 각 문서의 총 페이지 수를 추적하고 현재 PDF 문서 앞에 포함 된 모든 PDF 문서의 총 페이지 수를 기준으로 pdfmark 명령어에서 새 페이지 번호 포인터를 오프셋하는 수학을 수행합니다. 따라서 KenS의 2 패스 접근 방식과 비슷하지만 비슷하지는 않습니다. 먼저 pdftk를 사용하여 책갈피를 발견 한 다음 올바른 페이지 번호로 새 책갈피 파일을 작성합니다. 또한 원래의 pdfmark 지침 (일반적으로 gs가 noop으로 유지)을 돌릴 수 있습니다. 그 마지막 부분이 어떻게 작동했는지 모른 척하지는 않겠습니다 ...

그러나 최종본을 작성하기 전에 북마크 파일을 조정할 수있는 옵션이 필요합니다. Trevor King에게 아주 청초하고 모자 끝.

+0

어떻게 그 스크립트를 사용합니까? 나는 약간의 실수를하는 것 같다. – Bernhard

+0

@Bernhard 어떤 종류의 오류 – DrSAR

+0

다음과 같이 : http://pastebin.com/kjMgqCc1 어디에서'pdf-merge.py * .pdf'라고 입력하십시오. – Bernhard

2

당신이 파일을 추가 알고하지 않기 때문에 는에 북마크 및 기타 메타 데이터의 정보를 보존 당신이 산출물에서 그것을 원할 것이라는 가정.

그러나 PDF 파일을 결합 할 때 두 번째 및 후속 파일의 페이지 번호가 올바르지 않으므로 정보를 보존해도 작동하지 않습니다.

2 패스 방식이 필요합니다. 먼저 모든 파일을 병합하고 북마크를 삭제 한 다음 병합 된 파일을 '변환'하고 pdfmarks를 추가하여 올바른 북마크를 설정하십시오.

현재 책갈피를 보존하지 않는 옵션 (pdfwrite 포함)이 없습니다. 내가 생각한대로 Ghostscript PDF 인터프리터 PostScript 파일을 수정해야합니다. -dDOPDFMARKS = false를 설정해 볼 수도 있지만 작동 여부는 의심 스럽습니다.

+0

나는 당신의 -dDOPDFMARKS = false를 시도했지만, 의심스러워 보였습니다. – DrSAR

관련 문제