スキャンした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
)を含めます。必要なPDFページのラベルhyperref
は、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
。
もちろん、スクリプト言語を使用してこれを自動的に行うことができます。
PDF標準-ページラベルには詳細な仕様があります。
jPDF Tweakは、ページ番号(正しい用語は「ページラベリング」)とその他の多くの初心者から高度なPDF編集機能を提供するオープンソースのグラフィカルユーティリティです。Ubuntuおよびその他のオペレーティングシステムで実行されます。
ドキュメントのページには、ステップバイステップの手順を説明します。
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
ここで、これに使用できるポインターを見つけました。。pdftk-pdfへのブックマークの追加と編集-UnixおよびLinux-Stack Exchange#18600 ; リンクを参照します:
ただし、上記はブックマークを扱います-論理的なページネーションではありません。それはpdfmarkReference.pdfから判明し、必要な「コマンド」は ' /Label
'(または ' /PAGELABEL
')です-さらにPDFReference.pdfの 8.3.1章「ページラベル」を参照します。残念ながら、この章では、ページラベルでpdfmarkを使用する方法を必ずしも説明していませんが、この投稿では次のように説明しています。
/ PAGELABEL pdfmarkには/ Pageキーがないため、「現在の」ページのみにラベルを設定できます(結果として、一度に1ページのみに設定できます)。最初に呼び出すので、最初のページにのみラベルを設定する必要があります。
同じページに複数の/ PAGELABELs:pdfmarkリファレンスは、最後の1つが有効になるため、最初のコマンドラインの結果は問題ないことを示しています。/ Pageキーは無視されることに注意してください。
PostScriptからページラベルを設定する方法は?私は2つの方法を考えることができます:
(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のラベルが付いたの末尾に3つの空のページが追加されます:)
おそらく、これは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
仕事を行うことができる小さなPythonスクリプトがあります: ます 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
ますが、選択されている場合は、「この辞書には直接編集可能なプロパティはありません」と表示されます。