如果您在Postscript中有一个大文档(500页+)并且想要添加页码,是否有人知道如何操作?如何将页码添加到Postscript/PDF
回答
这可能是一个解决方案:
-
使用
- 创建一个LaTeX文件,然后使用pdfpages包(
\includepdf
) - 使用
pagecommand={\thispagestyle{plain}}
或东西从fancyhdr包,如果的\includepdf
- 参数插入网页
- 转换后记为pdf需要postscript输出,通过
pdf2ps
ps2pdf
我认为这是一个好主意,但是我没有得到它的工作。页码不会在\ includepdf页面上插入*。 –
您是否使用过类似'\ includepdf [pages = - ,pagecommand = {\ thispagestyle {plain}}] {document.pdf}'? – rcs
这实际上是Alan Munn在[他的解决方案](https://tex.stackexchange.com/a/18762/3406)中所做的,减去PS的东西。 –
哦,这是因为我使用后记很长一段时间,但快速下跌到蓝皮书会告诉你:) www-cdf.fnal.gov/offline/PostScript/BLUEBOOK.PDF
另另一方面,Adobe Acrobat和一个JavaScript代码也将做奇事。)
另外,我发现这一点:http://www.ghostscript.com/pipermail/gs-devel/2005-May/006956.html,这似乎符合这个要求(我没有尝试)
将pdflatex输出转换回postscript我假设你是寻找基于PS的解决方案。 PS中没有页面级别的操作符可以让您执行此操作。您需要在每个页面的PageSetup
部分中添加一个页脚类的东西。任何脚本语言都应该能够帮助你。
我在其他用户的http://www.osti.gov/bridge/product.biblio.jsp?query_id=0&page=0&osti_id=666084 –
基于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}
我曾经使用乳胶像在接受的答案中添加页码到我的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
警告中看到了使用Perl的解决方案:仅在build 1.43 pdftk具有* multistamp *功能之后 - 关于代码,我可以建议输出=“$ {1%03d.pdf} -header.pdf”以实现零均衡 – Dingo
Multistamp非常棒。然而,Enscript对于这个用例并不是非常灵活 - 我试图让页码在页脚的中心位置,以及我想要的字体等等......我最终做的是用我的文字处理器创建1000页,自动生成行号在页脚中。然后,我只是将它放在我的文件上。 –
它不适合我。 Bucle不会迭代,我尝试了hardcoding $ pagenum的值,但没有。 – xsubira
,你可以简单地使用
pspdftool
在这种方式:
pspdftool 'number(x=-1pt,y=-1pt,start=1,size=10)' input.pdf output.pdf
看到这两个例子(未编号和编号 PDF与pspdftool)
借用PDF
编号PDF
这个作为第一个命令行参数:
number(start=1, size=40, x=297.5 pt, y=10 pt)
继captaincomic的解决方案,我已经扩展它支持页码的开始,在任何页面。
要求ENSCRIPT,PDFTK 1.43或更大和pdfjam(对于pdfjoin实用程序)在/usr/local/bin/pagestamp.sh
#!/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 [email protected] --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
例如..地方这并执行这样的:
pagestamp.sh doc.pdf 3
这将在第3页开始的页码..有用的,当你有罩层,扉页和目录等
不幸的是,ENSCRIPT的--footer选项打破了,所以你不能使用这种方法得到底部的页码。
我试过pspdftool(http://sourceforge.net/projects/pspdftool)。
我终于得到它的工作,但一开始我得到这个错误:
pspdftool: xreftable read error
源文件与来自pdfjam pdfjoin创建,并为产生包含了一堆从我的爱普生劳动力扫描以及标签页。我找不到解决xref表的方法,所以我用pdf2ps转换为ps并用pdf2ps转换回pdf。然后,我可以使用它来在右下角得到很好的页码:
pspdftool 'number(start=1, size=20, x=550 pt, y=10 pt)' input.pdf output.pdf
不幸的是,这意味着任何文本搜索的页面不再能够搜索,因为文本是在PS转换光栅化。幸运的是,就我而言并不重要。
有什么办法可以修复或清空pdf文件的外部参照表而不会丢失可搜索的页面吗?
我把captaincomic的水溶液,并添加包含空格的文件名,加上提供有关进展情况的一些更多的信息支持
#!/bin/bash
clear
echo
echo This skript adds pagenumbers to a given .pdf file.
echo
echo This skript needs the packages pdftk and enscript
echo if not installed the script will fail.
echo use the command sudo apt-get install pdftk enscript
echo to install.
echo
input="$1"
output="${1%.pdf}-header.pdf"
echo input file is $input
echo output file will be $output
echo
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"
echo done.
我写了下面shell
脚本来解决这个与inkscape
生产LaTeX
beamer
风格的幻灯片(我pdftk cat
幻灯片一起进入最后陈述PDF
&然后用下面的脚本添加幻灯片编号):
#!/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
,纸张大小&样式选项。
编辑: 我通过$(which echo)
取代echo
由于ubuntu
符号链接到/bin/sh
dash
它默认&不提供-E
选项来覆盖此行为由壳内部口译转义序列覆盖echo
命令。请注意,或者您可以在LaTeX模板中将所有\
转义为\\
。
编辑: 我换成$(which echo)
通过printf '%s'
自zsh
,which echo
回报echo: shell built-in command
,而不是/bin/echo
。 有关详细信息,请参阅this question为什么我最终决定使用printf
。
我喜欢使用pspdftool(man page)的想法,但我是什么后,页Y中取X格式和字体样式的页面的其余部分匹配。
要了解该文档中使用的字体名称:与几个pspdftool
命令一起
$ pdfinfo input.pdf | grep "Pages:" | tr -s ' ' | cut -d" " -f2
胶水:
$ strings input.pdf | grep Font
要获取的页数
$ 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;
这里是结果:
- 1. 将页码添加到PDF文档中
- 2. 将页码添加到组合PDF中
- 3. ITextSharp将页码添加到合并pdf
- 4. R - 将页码添加到PDF
- 5. 使用ghostscript将页码添加到pdf
- 6. 将页码添加到pdf文档(itextsharp)
- 7. 如何添加页码(COBOL)
- 8. 如何将页面添加到菜单?
- 9. 如何将页面添加到panoramaItem?
- 10. 如何将html添加到此页面?
- 11. 如何将WPF页面添加到tabcontrol?
- 12. 如何将控件添加到页面?
- 13. 如何将页面添加到RDoc?
- 14. 如何将Bing Map添加到网页?
- 15. 如何将分页添加到XML Feed?
- 16. 如何将分页添加到REST API?
- 17. 如何将JavaScript添加到母版页?
- 18. Wordpress - 如何将主页添加到naviagtion?
- 19. 如何将页脚添加到布局?
- 20. 如何将字体添加到网页
- 21. 如何将favicon添加到ASP页
- 22. 如何将新页面添加到nopcommerce?
- 23. 如何将Java代码添加到静态网页中?
- 24. 如何将附属代码添加到Magento 1.7成功页面?
- 25. 如何将html添加到aspx C#代码隐藏页面?
- 26. WordPress的 - 如何将分页添加到我的代码
- 27. 如何将代码添加到shopify页面
- 28. 如何将谷歌分析代码添加到单页网站
- 29. 如何将代码隐藏添加到Sharepoint 2010母版页?
- 30. 如何将页码添加到锚链接?
将[showpage]运算符重写为[本答案](http://stackoverflow.com/a/6620599/477035)中的本质上的[重复问题](http://stackoverflow.com/ q/4766755/477035) – RedGrittyBrick
请参阅[Alan Munn在TeX SE上非常好的解决方案](https://tex.stackexchange.com/a/18762/3406)。 –