我的家谱有32页PDF。它不是将家谱全部放在一个非常大的PDF页面上(这就是我想要的),而是将其格式化为一组8个单独的美国字母大小的页面应该在宽度上拼接;这4行完成了树。每页的边距都是22px。
如果您以表格形式显示它(数字代表PDF页码):
我试图用一些Python代码来做这件事,但还没有走得太远。如何拼接PDF以使其可以是一个大页面而不是较小的单个页面?
感谢您的帮助。
编辑:这是我写的代码。很抱歉没有发布它。from pyPdf import PdfFileWriter, PdfFileReader
STITCHWIDTH = 8;
currentpage = 1;
output = PdfFileWriter()
input1 = PdfFileReader(file("familytree.pdf", "rb"))
for(i=0; i<=4; i++)
output.addPage(input1.getPage(currentpage))
currentpage++;
#do something to add other pages to width
print "finished with stitching"
outputStream = file("familytree-stitched.pdf", "wb")
output.write(outputStream)
outputStream.close()
答案 0 :(得分:5)
作为Ben Jackson首次转换为PostScript的suggestion的替代方案,并对PostScript文件进行“N-up”转换,还有一个名为pdfnup
的实用程序可用作{ {3}}套件,可直接在PDF文件上运行。例如:
pdfnup --nup 8x4 --outfile output.pdf input.pdf
答案 1 :(得分:1)
使用pdf2ps
(Ghostscript的一部分)将PDF转换为PostScript。这通常是无损变换。然后使用http://www.tailrecursive.org/postscript/nup.html或任何其他“N-up”PostScript前导码技术重新组织您的页面。
示例链接结合了一个perl脚本来修改PostScript以插入一些片段,但是您可以找到覆盖showpage
的更复杂的示例,以便您可以在重新定义的showpage
处插入前导码。文档的开头。
答案 2 :(得分:0)
如果你有一个LaTeX安装,我建议使用
pdfpages
包,pdflatex
命令。将以下LaTeX脚本保存为8x4-letter.tex
。相应地调整/path/to/input.pdf
:
\documentclass{article}
\usepackage{color}
\definecolor{mygray}{rgb}{.9,.9,.9} % background color for complete poster
\pagecolor{mygray} % line must *precede* \usepackage{pdfpages}
\usepackage[final]{pdfpages} % comment out for testing
\usepackage[paperwidth=4896ppt, paperheight=3168]{geometry}
% dimensions of 8 letter widths, 4 heights
\pagestyle{plain} % do not use page numbering
\begin{document} % orig. slide sizes are 612x792 pts (Letter)
\includepdf[nup=8x4, % 8x4 grid was asked for
delta=0 0, % horiz.+vert. distance between slides
scale=0.999, % scale down for additional margins
pages={1-32}, % input document has 32 pages
noautoscale=false, % set to true if you have larger pages
frame=false] % set to true if you want frames
{/path/to/input.pdf} % filename+path cannot have spaces!
\end{document}
pdflatex
命令现在运行
pdflatex 8x4-letter.tex
这应生成PDF文件8x4-lettter.pdf
。
如果您想在每个页面周围使用框架,请使用frame=true
。要在页面之间添加额外的间距,请使用delta=10 10
或delta=17 11
或适合您的任何内容。您可能还想更改scale=...
的值。