J'ai une gamme de PDF fichiers 1.pdf
, 2.pdf
, etc. que je souhaite fusionner en un seul fichier, avec tous les PDF en mosaïque sur une seule page.
Actuellement, j'ai essayé pdftk
de fusionner ces fichiers, mais ils sont placés sur des pages séparées:
pdftk 1.pdf 2.pdf ... cat output merged.pdf
Existe-t-il un moyen de transformer les fichiers PDF individuels en un seul gabarit sur merged.pdf
?
J'ai testé cela aujourd'hui:
pdfjam Page1.pdf Page2.pdf --nup 2x1 --landscape --outfile Page1+2.pdf
Il met 2 pages sur une page.
Le pdfLaTeX basé pdfnup pourrait fonctionner pour vous. Si vous avez beaucoup de fichiers pdf, vous devrez peut-être créer un long tuyau de pdfjam ou l'exécuter plusieurs fois.
Il y a aussi pdfnup en python .
Vous ne savez pas ce que vous entendez par tiled on one page
. Je cherchais un moyen de fusionner plusieurs fichiers PDF sur une page - sur une autre. Ceci peut être fait avec pdftk
comme ceci:
pdftk foreground.pdf background background.pdf output merged.pdf
Ce script tuile les pages pdf pour vous. Modifiez la tranche en fonction de ce dont vous avez besoin par page.
#!/usr/bin/Ruby
latexhead = <<'EOF'
\documentclass{article}
\usepackage[pdftex]{graphicx}
\usepackage[margin=0.1in]{geometry}
\usepackage{pdfpages}
\begin{document}
EOF
latextail = <<'EOF'
\end{document}
EOF
pages = %x[pdfinfo #{ARGV[0]}].split(/\n/).select{|x| x=~ /Pages:/}[0].split(/\s+/)[1].to_i
puts latexhead
s = (1..pages).each_slice(4).to_a
s.each do |a|
puts "\\begin{figure}"
a.each do |p|
puts "\\includegraphics[page=#{p},scale=0.4,width=.5\\textwidth]{#{ARGV[0]}}"
end
puts "\\end{figure}"
end
puts latextail
vous pouvez utiliser montage à partir de ImageMagick
$ montage *.pdf merged.pdf
Si les noms de fichiers sont dans un ordre "spécifique au système", alors pdftk *.pdf cat output merged.pdf
devrait fonctionner correctement.
Voici ce que je veux dire par ordre "spécifique au système".
Exemple:
J'ai 3 fichiers sur mon Ubuntu 11.04: 1.pdf, 2.pdf, 10.pdf
Les fichiers sont fusionnés dans l’ordre: 10.pdf 1.pdf 2.pdf (ls -l
a retourné le même ordre que dans le fichier fusionné)
Convention de nommage la plus sûre: 0001.pdf, 0002.pdf, etc.
Si vous avez un grand nombre de PDF dans une structure de dossiers et vous avez une installation TeX, ce script place tous les PDF de manière récursive en un seul fichier volumineux:
#!/bin/bash
#
# pdfdir OUTPUT_FILE
#
# produces one big PDF file of all PDF files in .
#
if [ $# -ne 1 ] || [ -z "$1" ]; then
echo "Syntax: pdfdir OUTPUT_FILE"
exit 1
fi
FILE="$(echo "$1"|sed -e 's/\.\(pdf\|tex\)$//')"
for F in "$FILE" "$FILE.tex" "$FILE.pdf" "$FILE.aux" "$FILE.log" ; do
if [ -e "$F" ]; then
echo "$F exists already."
exit 2
fi
done
cat >"$FILE.tex" <<EOF
\documentclass{article}%
\usepackage{pdfpages}%
\usepackage{grffile}%
\listfiles%
\begin{document}%
%\tableofcontents%
EOF
# helper functions
exist_pdf_files () {
[ $(find -L "$1" -name \*.pdf -o -name \*.PDF -type f 2>/dev/null|wc -l) -eq 0 ] && return 1
return 0
}
list_directories () {
find -L "$1" -maxdepth 1 -mindepth 1 -type d 2>/dev/null | sort
}
list_pdf_files () {
# version with " around filenames:
#find -L "$1" -maxdepth 1 -mindepth 1 -name \*.pdf -o -name \*.PDF -type f 2>/dev/null | sort | \
# sed -e 's/^/\\includepdf[pages=-]{"/; s/$/"}%/'
# version without " around filenames:
find -L "$1" -maxdepth 1 -mindepth 1 -name \*.pdf -o -name \*.PDF -type f 2>/dev/null | sort | \
sed -e 's/^/\\includepdf[pages=-]{/; s/$/}%/'
}
tex_headline () {
echo "$1" | sed -e 's/_/\\_/g'
}
# current folder (lefel 0):
list_pdf_files . >>"$FILE.tex"
# Bearbeite Ebene 1:
list_directories . | while read -r DIR1; do
# Are there PDFs in folders below that level?
exist_pdf_files "$DIR1" || continue
# Yes ...
tex_headline "\section{${DIR1##*/}}%"
# those:
list_pdf_files "$DIR1"
# Level 2:
list_directories "$DIR1" | while read -r DIR2; do
exist_pdf_files "$DIR2" || continue
tex_headline "\subsection{${DIR2##*/}}%"
list_pdf_files "$DIR2"
# Level 3:
list_directories "$DIR2" | while read -r DIR3; do
exist_pdf_files "$DIR3" || continue
tex_headline "\subsubsection{${DIR3##*/}}%"
list_pdf_files "$DIR3"
# Level 4:
list_directories "$DIR3" | while read -r DIR4; do
exist_pdf_files "$DIR4" || continue
tex_headline "\paragraph{${DIR4##*/}}%"
list_pdf_files "$DIR4"
# Level 5:
list_directories "$DIR4" | while read -r DIR5; do
exist_pdf_files "$DIR5" || continue
tex_headline "\subparagraph{${DIR5##*/}}%"
list_pdf_files "$DIR5"
done
done
done
done
done >>"$FILE.tex"
echo "\end{document}%" >>"$FILE.tex"
echo "Sourcecode to PDF directly [J/n]"
read -r ANSWER
case "$ANSWER" in
[JjYy]) ;;
*) exit 0 ;;
esac
pdflatex "$FILE"
[ $? -eq 0 ] && rm -f "$FILE.aux" "$FILE.log" "$FILE.tex"
Je n'ai pas écrit ce code, je viens d'une discussion ici: http://www.listserv.dfn.de/cgi-bin/wa?A2=ind1201&L=tex- d-l & T = 0 & P = 10771
C'est très utile. J'ai traduit des commentaires en allemand en anglais.
Cordialement, Alexander