스캔 한 PDF 의 메타 데이터 를 편집하여 다른 페이지에 사용자 정의 페이지 번호를 할당하려고합니다. 예를 들어, 현재 1 ~ 3 페이지는 i, ii, iii, 4 ~ 10 페이지는 1 ~ 7로 전화하고 싶습니다. 나는 할 수 없습니다 페이지의 실제 순서를 변경하고 싶습니다.
A) 무료 도구를 사용하여이 작업을 수행 할 수있는 방법이 있습니까? B)이 "일괄 처리"방법 (각 페이지를 수동으로 번호를 다시 매길 필요 없음)
스캔 한 PDF 의 메타 데이터 를 편집하여 다른 페이지에 사용자 정의 페이지 번호를 할당하려고합니다. 예를 들어, 현재 1 ~ 3 페이지는 i, ii, iii, 4 ~ 10 페이지는 1 ~ 7로 전화하고 싶습니다. 나는 할 수 없습니다 페이지의 실제 순서를 변경하고 싶습니다.
A) 무료 도구를 사용하여이 작업을 수행 할 수있는 방법이 있습니까? B)이 "일괄 처리"방법 (각 페이지를 수동으로 번호를 다시 매길 필요 없음)
답변:
LaTeX 기반 솔루션입니다. pdfpages
패키지를 사용하여 스캔 한 PDF (여기서 scan.pdf
) 를 포함시킵니다 . 옵션이 활성화 된 hyperref
패키지를 사용하여 원하는 PDF 페이지 레이블을 설정할 수 있습니다 pdfpagelabels
. 일반 \thepage
매크로를 소문자 로마 숫자로 정의 할 수있는 레이블로 사용합니다 . 그런 다음 페이지 카운터가 재설정되고 일반 숫자로 다시 변경됩니다.
\documentclass[a4paper]{article}% or use 'letterpaper'
\usepackage{pdfpages}
\usepackage[pdfpagelabels]{hyperref}
\begin{document}
% Set lower case roman numbers (\Roman would be upper case):
\renewcommand{\thepage}{\roman{page}}
\includepdf[pages=1-3]{scan.pdf}
% Back to normal (arabic) numbers:
\renewcommand{\thepage}{\arabic{page}}
% Reset page counter to 1:
\setcounter{page}{1}
\includepdf[pages=4-]{scan.pdf}
\end{document}
위의 코드를 파일 (예 :)에 넣고 다음을 사용하여 scan_mod.tex
컴파일하십시오 pdflatex
.
# pdflatex scan_mod
이 생산 scan_mod.pdf
합니다. 그러나 특수 주석에는 다음이 포함됩니다. 하이퍼 링크가 사라집니다. 스캔 한 PDF에는 아무런 문제가 없습니다.
더 자주 필요한 경우 로마 숫자 페이지 수와 파일 이름을 인수로 허용하고 이름과 숫자가 변수 인 위의 코드를 사용하여 임시 파일을 작성하는 스크립트를 작성할 수 있습니다.
텍스트 편집기를 사용하여이를 수행 할 수 있습니다.
답변에서 알 수 있듯이 텍스트 편집기로 PDF 파일을 열고 /Catalog
항목을 검색 한 후 다음 /PageLabels
과 같은 이름의 항목을 추가 하십시오.
/PageLabels << /Nums [
0 << /P (cover) >> % labels 1st page with the string "cover"
1 << /S /r >> % numbers pages 2-6 in small roman numerals
6 << /S /D >> % numbers pages 7-x in decimal arabic numerals
]
>>
페이지 인덱스 (실제 페이지 번호)는로 시작합니다 0
.
cource 중에서도 스크립팅 언어를 사용하여이 작업을 자동으로 수행 할 수 있습니다.
PDF 표준-페이지 레이블 에 자세한 사양이 있습니다.
jPDF Tweak 는 페이지 번호 매기기 (올바른 용어는 "페이지 레이블링") 및 기타 초보자부터 고급 PDF 편집 기능을 제공하는 오픈 소스 그래픽 유틸리티입니다. 우분투 및 기타 운영 체제에서 실행됩니다.
문서 페이지는 단계별 지침을 제공합니다.
PDF 페이지를 재정렬하는 무료 도구 인 PDF Mod라는 도구가 있습니다.
Ubuntu 10.10 이상의 Ubuntu Software Center에서 설치할 수 있습니다.
Ubuntu 9.10 또는 10.04에 설치하려면
ppa:pdfmod-team/ppa
소프트웨어 소스에 ppa 를 추가하고 ( 방법은 다음과 같습니다 ) 소프트웨어 센터에서 pdfmod를 설치하십시오.
적응 : http://www.webupd8.org/2011/03/edit-pdf-documents-in-linux-with-pdf.html
행운을 빕니다 : D
그냥 사용하는 것이 가능할 수 있다는 포인터를 발견 ghostscript
여기,이를 위해 : - 추가 및 편집 북마크 PDF로 - 유닉스와 리눅스 - pdftk을 스택 교환 # 18600 ; 그것은 링크를 말합니다 :
그러나 위의 북마크는 논리적 페이지 매김이 아닌 북마크를 처리합니다. 그것은에서 밝혀 pdfmarkReference.pdf , 필요한 "명령" '이다 /Label
'(또는 ' /PAGELABEL
') - 그리고 더를 의미 PDFReference.pdf의 장 8.3.1 "페이지 레이블". 불행히도,이 장에서는 pdfmark를 페이지 레이블과 함께 사용하는 방법을 설명하지 않아도되지만이 게시물은 다음을 수행합니다.
/ PAGELABEL pdfmark에는 / Page 키가 없으므로 '현재'페이지에만 레이블을 설정할 수 있습니다 (결과적으로 한 번에 한 페이지에 대해서만). 맨 처음에 전화하기 때문에 첫 번째 페이지의 레이블 만 설정해야합니다.
동일한 페이지에 대한 여러 / PAGELABEL : pdfmark 참조에 마지막 페이지가 적용되었다고 표시되어 첫 번째 명령 줄의 결과는 정상입니다. / Page 키는 무시됩니다.
PostScript에서 페이지 레이블을 설정하는 방법은 무엇입니까? 두 가지 방법을 생각할 수 있습니다.
(A) 100 % 문서화 된 방식 :
각 페이지의 일부로 / PAGELABEL을 발행하십시오.
(B) 덜 문서화 된 방법 : ...
gswin32c -sDEVICE=pdfwrite -sOutputFile=50pages.pdf -dNOPAUSE
GS>[/_objdef {pl} /type /dict /OBJ pdfmark
GS>[{pl} <</Nums [0 <</P (Page ) /S /r /St 10>> 2 <<>>]>> /PUT pdfmark
GS>[{Catalog} <</PageLabels {pl}>> /PUT pdfmark
GS>50 { showpage } repeat
GS>quit
... 그리고 그 스레드에서 더 :
이 일을하는 것과 관련하여; 원본 파일은 PDF 파일이므로 파일에서 각 페이지를 개별적으로 실행할 수 있습니다. 따라서 1 페이지의 PAGELABEL pdfmark를 설정하고 원본 파일에서 1 페이지를 실행하고 2 페이지의 PAGELABEL을 설정하고 원본 파일에서 2 페이지를 실행하는 등의 작업을 수행 할 수 있습니다.
현재 페이지에 레이블이 SaGS로 표시되어 있으므로 출력 PDF 파일에서 각 페이지의 레이블을 올바르게 설정해야합니다. (캐비티 : 나는 실제로 이것을 시도하지 않았다)
편집 : 이것을 보여주기 위해- pdfmarks
파일로 저장 한 경우 :
[ /Label (-1) /PAGELABEL pdfmark
showpage
[ /Label (0) /PAGELABEL pdfmark
showpage
[ /Label (1) /PAGELABEL pdfmark
showpage
... 그리고 당신은 전화 :
gs -q -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=outfile.pdf infile.pdf pdfmarks
... 다음에 끝에 infile.pdf
-1, 0 및 1 레이블이 붙은 세 개의 빈 페이지가 추가됩니다. :)
글쎄, 이것은 아마도 gs
페이지 번호를 다시 매기 는 간단한 스크립트 를 얻는 데 도움이 될 것입니다 :)
건배!
EDIT2 : 알았습니다. gs
위와 동일한 명령을 사용하십시오. 아래와 pdfmarks
스크립트 의 내용은 infile.pdf의 번호를 다시 매길 것이므로 -1, 0, 1로 시작합니다 ... 기본적으로 수정 된 예입니다. PDF 참조 (자세한 내용은 주석 참조) :
% Type name (Optional) The type of PDF object that this dictionary describes; if present, must be PageLabel for a page label dictionary.
% S name (Optional) The numbering style to be used for the numeric portion of each page label:
% D Decimal arabic numerals
% R Uppercase roman numerals
% r Lowercase roman numerals
% A Uppercase letters (A to Z for the first 26 pages, AA to ZZ for the next 26, and so on)
% a Lowercase letters (a to z for the first 26 pages, aa to zz for the next 26, and so on)
% P text string (Optional) The label prefix for page labels in this range.
% St integer (Optional) The value of the numeric portion for the first page label in the range. Subsequent pages will be numbered sequentially from this value, which must be greater than or equal to 1. Default value: 1.
% renumber first 25 pages - push each by 10, and add prefix:
% [/_objdef {pl} /type /dict /OBJ pdfmark
% [{pl} <</Nums [0 <</P (Page ) /S /D /St 10>> 25 <<>>]>> /PUT pdfmark
% [{Catalog} <</PageLabels {pl}>> /PUT pdfmark
[/_objdef {pl} /type /dict /OBJ pdfmark
[{pl} <</Nums [ 0 << /P (-1) >> % just label -1 (no style) for pg 0;
1 << /P (0) >> % just label 0 (no style) for pg 1;
2 << /S /D /St 1 >> % decimal style, start from 1, for pg2 and on.
]>> /PUT pdfmark
[{Catalog} <</PageLabels {pl}>> /PUT pdfmark
https://github.com/lovasoa/pagelabels-py : 일을 할 수있는 작은 파이썬 스크립트가 있습니다
귀하의 경우 전화 :
./addpagelabels.py --delete file.pdf
./addpagelabels.py --startpage 1 --type 'roman lowercase' file.pdf
./addpagelabels.py --startpage 4 --type arabic file.pdf
Openoffice / Libreoffice는 pdf-import 확장자와 페이지 매김 매크로를 사용하여 트릭을 수행 할 수 있습니다.
완벽한 해결책은 아니지만 그것은 나를 위해 작동합니다 (PDF Mod를 사용하는 것 외에-강력하게 제안합니다).
PDFEdit이라는 또 다른 앱이 있습니다-소스 포지에서 호스팅됩니다. Source Forge 프로젝트 페이지 -그러나 필요한 기능이 아니기 때문에 도움이되지 않습니다.
pdfedit
를 표시 할 수 Catalog/PageLabels
있지만 선택하면 다음과 같이 표시됩니다. " 이 사전에는 직접 편집 가능한 특성이 없습니다. "... Cheers!