36

Postscriptに大きなドキュメント(500ページ以上)があり、ページ番号を追加したい場合、誰かがこれを行う方法を知っていますか?

4

15 に答える 15

27

rcsの提案したソリューションに基づいて、私は次のことを行いました。

ドキュメントをに変換してexample.pdf実行しましたpdflatex addpages。ここで、次のようになりaddpages.texます。

\documentclass[8pt]{article}
\usepackage[final]{pdfpages}
\usepackage{fancyhdr}

\topmargin 70pt
\oddsidemargin 70pt

\pagestyle{fancy}
\rfoot{\Large\thepage}
\cfoot{}
\renewcommand {\headrulewidth}{0pt}
\renewcommand {\footrulewidth}{0pt}

\begin{document}
\includepdfset{pagecommand=\thispagestyle{fancy}}
\includepdf[fitpaper=true,scale=0.98,pages=-]{example.pdf}
% fitpaper & scale aren't always necessary - depends on the paper being submitted.
\end{document}

または、両面ページの場合(つまり、ページ番号が一貫して外側にある場合):

\documentclass[8pt]{book}
\usepackage[final]{pdfpages}
\usepackage{fancyhdr}

\topmargin 70pt
\oddsidemargin 150pt
\evensidemargin -40pt

\pagestyle{fancy}
\fancyhead{} 
\fancyfoot{} 
\fancyfoot[LE,RO]{\Large\thepage}

\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}

\begin{document}
\includepdfset{pages=-,pagecommand=\thispagestyle{fancy}}
\includepdf{target.pdf}
\end{document}

ヘッダーマージンを変更する簡単な方法:

% set margins for headers, won't shrink included pdfs
% you can remove the topmargin/oddsidemargin/evensidemargin lines
\usepackage[margin=1in,includehead,includefoot]{geometry}
于 2009-10-22T15:30:22.940 に答える
18

簡単に使用できます

pspdftool

この上:

pspdftool 'number(x=-1pt,y=-1pt,start=1,size=10)' input.pdf output.pdf

これらの2つの例を参照してください(pspdftoolを使用した番号なしおよび番号付きpdf)

番号のないpdf

http://ge.tt/7ctUFfj2

番号付きpdf

http://ge.tt/7ctUFfj2

これを最初のコマンドライン引数として:

number(start=1, size=40, x=297.5 pt, y=10 pt)
于 2012-01-27T14:37:30.043 に答える
17

受け入れられた回答のように、ラテックスを使用してPDFにページ番号を追加していました。

今、私はより簡単な方法を見つけました:enscriptページ番号を含むヘッダーを持つ空のページを作成するために使用し、ファイルにヘッダーを配置するオプションを使用pdftkします。multistamp

この bash スクリプトは、唯一のパラメーターとして pdf ファイルを想定しています。

#!/bin/bash
input="$1"
output="${1%.pdf}-header.pdf"
pagenum=$(pdftk "$input" dump_data | grep "NumberOfPages" | cut -d":" -f2)
enscript -L1 --header='||Page $% of $=' --output - < <(for i in $(seq "$pagenum"); do echo; done) | ps2pdf - | pdftk "$input" multistamp - output $output
于 2012-01-27T12:13:34.517 に答える
15

これは解決策かもしれません:

  1. を使用して Postscript を pdf に変換するps2pdf
  2. LaTeX ファイルを作成し、pdfpagesパッケージを使用してページを挿入します ( \includepdf)
  3. の引数でfancyhdrパッケージpagecommand={\thispagestyle{plain}}のまたは何かを使用します\includepdf
  4. PostScript 出力が必要な場合は、pdflatex 出力を PostScript に変換します。pdf2ps
于 2009-10-21T20:43:43.627 に答える
5

Captaincomic のソリューションに加えて、任意のページでページ番号の開始をサポートするように拡張しました。

enscript、pdftk 1.43 以上、および pdfjam (pdfjoin ユーティリティ用) が必要です。

#!/bin/bash
input="$1"
count=$2
blank=$((count - 1))
output="${1%.pdf}-header.pdf"
pagenum=$(pdftk "$input" dump_data | grep "NumberOfPages" | cut -d":" -f2)
(for i in $(seq "$blank"); do echo; done) | enscript -L1 -B --output - | ps2pdf - > /tmp/pa$$.pdf
(for i in $(seq "$pagenum"); do echo; done) | enscript -a ${count}- -L1 -F Helvetica@10 --header='||Page $% of $=' --output - | ps2pdf - > /tmp/pb$$.pdf
pdfjoin --paper letter --outfile /tmp/join$$.pdf /tmp/pa$$.pdf /tmp/pb$$.pdf &>/dev/null
cat /tmp/join$$.pdf | pdftk "$input" multistamp - output "$output"
rm /tmp/pa$$.pdf
rm /tmp/pb$$.pdf
rm /tmp/join$$.pdf

たとえば、これを /usr/local/bin/pagestamp.sh に配置して、次のように実行します。

pagestamp.sh doc.pdf 3

これにより、ページ番号が 3 ページから始まります。カバーシート、タイトル ページ、目次などがある場合に便利です。

残念なことに、enscript の --footer オプションが壊れているため、この方法を使用して下部のページ番号を取得することはできません。

于 2012-04-25T21:10:44.897 に答える
5

私はpspdftool ( man ページ)を使用するというアイデアが気に入りましたが、私が求めていたのは、y形式のページ x と、ページの残りの部分に一致するフォント スタイルでした。

ドキュメントで使用されているフォント名を調べるには:

$ strings input.pdf | grep Font

ページ数を取得するには:

$ pdfinfo input.pdf | grep "Pages:" | tr -s ' ' | cut -d" " -f2

pspdftoolいくつかのコマンドで接着します。

$ in=input.pdf; \
out=output.pdf; \
indent=30; \
pageNumberIndent=49; \
pageCountIndent=56; \
font=LiberationSerif-Italic; \
fontSize=9; \
bottomMargin=40; \
pageCount=`pdfinfo $in | grep "Pages:" | tr -s ' ' | cut -d" " -f2`; \
pspdftool "number(x=$pageNumberIndent pt, y=$bottomMargin pt, start=1, size=$fontSize, font=\"$font\")" $in tmp.pdf; \
pspdftool "text(x=$indent pt, y=$bottomMargin pt, size=$fontSize, font=\"$font\", text=\"page \")" tmp.pdf tmp.pdf; \
pspdftool "text(x=$pageCountIndent pt, y=$bottomMargin pt, size=$fontSize, font=\"$font\", text=\"out of $pageCount\")" tmp.pdf $out; \
rm tmp.pdf;

結果は次のとおりです。

ここに画像の説明を入力

于 2016-01-26T16:05:37.440 に答える
3

PostScript を使ってからずいぶん経ちましたが、ブルー ブックをざっと見てみればわかります :) www-cdf.fnal.gov/offline/PostScript/BLUEBOOK.PDF

一方、Adobe Acrobat と少しの JavaScript も驚異的な効果を発揮します ;)

または、これを見つけました:http://www.ghostscript.com/pipermail/gs-devel/2005-May/006956.html、これは法案に合っているようです(私は試しませんでした)

于 2009-10-21T20:28:56.147 に答える
1

PSベースのソリューションをお探しだと思います。PSには、これを可能にするページレベルの演算子はありません。PageSetup各ページのセクションにフッターを追加する必要があります。どんなスクリプト言語でもあなたを助けることができるはずです。

于 2009-10-21T20:47:59.087 に答える
0

で作成されたスタイル スライドでshellこれを解決するために、次のスクリプトを作成しました(スライドを最終的なプレゼンテーションにまとめてから、以下のスクリプトを使用してスライド番号を追加します)。LaTeX beamerinkscapepdftk catPDF

#!/bin/sh

# create working directory
tmpdir=$(mktemp --directory)

# read un-numbered beamer slides PDF from STDIN & create temporary copy
cat > $tmpdir/input.pdf

# get total number of pages
pagenum=$(pdftk $tmpdir/input.pdf dump_data | awk '/NumberOfPages/{print $NF}')

# generate latex beamer document with the desired number of empty but numbered slides
printf '%s' '
\documentclass{beamer}
\usenavigationsymbolstemplate{}
\setbeamertemplate{footline}[frame number]
\usepackage{forloop}
\begin{document}
 \newcounter{thepage}
  \forloop{thepage}{0}{\value{thepage} < '$pagenum'}{
    \begin{frame}
    \end{frame}
  }
\end{document}
' > $tmpdir/numbers.tex

# compile latex file into PDF (2nd run needed for total number of pages) & redirect output to STDERR
pdflatex -output-directory=$tmpdir numbers.tex >&2 && pdflatex -output-directory=$tmpdir numbers.tex >&2

# add empty numbered PDF slides as background to (transparent background) input slides (page by
# page) & write results to STDOUT
pdftk $tmpdir/input.pdf multibackground $tmpdir/numbers.pdf output -

# remove temporary working directory with all intermediate files
rm -r $tmpdir >&2

このスクリプトSTDINは、STDOUT印刷診断pdflatex出力を に読み書きしSTDERRます。

したがって、上記のコードをテキスト ファイルにコピー アンド ペーストし、たとえばenumerate_slides.sh、実行可能 ( chmod +x enumerate_slides.sh) にして、次のように呼び出します。

./enumerate_slides.sh < input.pdf > output.pdf [2>/dev/null]

適切な用紙サイズとスタイル オプションLaTeXを使用するようにテンプレートを調整することで、これを他の種類のドキュメントに簡単に調整できるはずです。documentclass

編集:シンボリックリンクで、デフォルトでエスケープシーケンスを解釈するシェル内部でコマンドをオーバーライドするシンボリックリンクに 置き換えecho、この動作をオーバーライドするオプションを提供しません。別の方法として、LaTeX テンプレートのすべてを としてエスケープすることもできます。$(which echo)ubuntu/bin/shdashecho-E\\\

編集:の代わりに, を返すので、 に置き換えまし$(which echo)た。最終的に使用することにした理由の詳細については、この質問を参照。printf '%s'zshwhich echoecho: shell built-in command/bin/echoprintf

于 2015-06-06T15:24:47.190 に答える
-1

これには pstops ( psutils の一部)を使用できますか?

于 2009-10-21T20:23:04.007 に答える
-1

これにはLibreOffice Calcを使用しました。Insert->Field->Page Numberを使用すると、ページ番号フィールドを簡単に追加できます。そして、このフィールドをコピーして他のページに貼り付けることができます。幸いなことに、位置は変更されておらず、下矢印キーCtrl+Vを使用してコピー アンド ペーストをすばやく実行できます。30ページの記事で私のために働いた. 500 以上のエラーが発生しやすい可能性があります。

于 2022-01-12T08:30:18.190 に答える