Se hai un documento di grandi dimensioni (500 pagine +) in Postscript e vuoi aggiungere numeri di pagina, qualcuno sa come farlo?Come aggiungere numeri di pagina a Postscript/PDF
risposta
questo potrebbe essere un soluzione:
- convertire PostScript a PDF utilizzando
ps2pdf
- creare un file LaTeX e inserire le pagine utilizzando il pacchetto pdfpages (
\includepdf
) - uso
pagecommand={\thispagestyle{plain}}
o qualcosa dal pacchetto fancyhdr negli argomenti di\includepdf
- se è necessario l'output PostScript, convertire l'output pdflatex in poscritto tramite
pdf2ps
Penso che questa sia una grande idea, ma non ho funzionato. I numeri di pagina non inseriscono * sopra * le pagine \ includepdf. –
Hai usato qualcosa come '\ includepdf [pages = -, pagecommand = {\ thispagestyle {plain}}] {document.pdf}'? – rcs
Questo è essenzialmente ciò che Alan Munn fa in [sua soluzione] (https://tex.stackexchange.com/a/18762/3406), meno le cose su PS. –
Forse pstops (parte di psutils) può essere utilizzato per questo?
Ho passato un po 'di tempo su questo, e sembra che psutils non lo farà - a meno che mi manchi qualcosa. –
Oh, è da molto tempo che ho usato PostScript, ma un rapido tuffo nel libro blu vi dirà :) www-cdf.fnal.gov/offline/PostScript/BLUEBOOK.PDF
D'altra mano, Adobe Acrobat e un po 'di javascript sarebbe anche fare miracoli;)
in alternativa, ho trovato questo: http://www.ghostscript.com/pipermail/gs-devel/2005-May/006956.html, che sembra adattarsi il disegno di legge (non ho provato)
Suppongo che tu sia alla ricerca di una soluzione basata su PS. Non esiste un operatore a livello di pagina in PS che ti consenta di farlo. È necessario aggiungere un piè di pagina, una sorta di cosa nella sezione PageSetup
per ogni pagina. Qualsiasi linguaggio di scripting dovrebbe essere in grado di aiutarti.
Ho visto una soluzione con Perl in http://www.osti.gov/bridge/product.biblio.jsp?query_id=0&page=0&osti_id=666084 –
Sulla base di RCS soluzione proposta, ho fatto quanto segue:
convertito il documento example.pdf
e corse pdflatex addpages
, dove addpages.tex
legge:
\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}
o, in alternativa, per le pagine fronte-retro (cioè con il numero di pagina costantemente all'esterno):
\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}
Un modo semplice per modificare i margini dell'intestazione:
% set margins for headers, won't shrink included pdfs
% you can remove the topmargin/oddsidemargin/evensidemargin lines
\usepackage[margin=1in,includehead,includefoot]{geometry}
Ho usato per aggiungere numeri di pagina al mio pdf utilizzando il lattice come nella risposta accettata.
Ora ho trovato un modo più semplice: Usa enscript
per creare pagine vuote con un colpo di testa che contiene il numero di pagina, e quindi utilizzare pdftk
con l'opzione multistamp
di mettere l'intestazione sul file.
Questo script bash si aspetta che il file pdf in quanto è unico parametro:
#!/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
avviso per altri utenti: solo dal momento che la build 1.43 pdftk ha * funzionalità multistamp * - riguardo al codice posso suggerire output = "$ {1% 03d.pdf} -header.pdf" per avere l'equalizzazione zero – Dingo
Multistamp è fantastico. Enscript tuttavia non è molto flessibile per questo caso d'uso - Ho cercato di ottenere i numeri di linea centrati nel footer, con il font che voglio ecc ... Quello che ho finito è creare 1000 pagine con il mio word processor, con numeri di linea auto nel footer. Quindi ho solo multi-memoria sui miei file. –
Non funziona per me. Bucle non itera, ho provato hardcoding $ pagenum value, ma niente. – xsubira
si può semplicemente utilizzare
pspdftool
in in questo modo:
pspdftool 'number(x=-1pt,y=-1pt,start=1,size=10)' input.pdf output.pdf
vedi questi due esempi (non numerate e numerati pdf con pspdftool)
pdf numerato
pdf numerato
con questo come primo argomento della riga di comando:
number(start=1, size=40, x=297.5 pt, y=10 pt)
Funziona alla grande ma si rompe internamente e collegamenti esterni – jdewit
Parlando di link non funzionanti, questi collegamenti ipertestuali in formato .pdf sono danneggiati. – foobarbecue
scusate, mi impegnerò a sostituire il prima possibile – Dingo
seguito alla soluzione di captaincomic, ho esteso per sostenere l'avvio di numerazione delle pagine in qualsiasi pagina.
Richiede enscript, PDFTK 1.43 o superiore e pdfjam (per pdfjoin utility)
#!/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
Per esempio .. Posto questo /usr/local/bin/pagestamp.sh ed eseguire come:
pagestamp.sh doc.pdf 3
Ciò avvierà il numero di pagina in pagina 3 .. utile quando si dispone di copertine, frontespizi e tabella dei contenuti, ecc
la cosa spiacevole è un'opzione --footer quella enscript è rotto, quindi non è possibile ottenere la numerazione delle pagine in basso usando questo metodo.
Ho provato pspdftool (http://sourceforge.net/projects/pspdftool).
alla fine ho preso a lavorare, ma in un primo momento ho ottenuto questo errore:
pspdftool: xreftable read error
Il file sorgente è stato creato con pdfjoin da pdfjam, e conteneva una serie di scansioni dal mio Workforce Epson così come generata tag pagine. Non riuscivo a capire un modo per sistemare la tabella xref, quindi mi sono convertito in ps con pdf2ps e di nuovo in pdf con pdf2ps. Poi ho potuto usare questo per ottenere i numeri di pagina belle nell'angolo in basso a destra:
pspdftool 'number(start=1, size=20, x=550 pt, y=10 pt)' input.pdf output.pdf
Purtroppo, ciò significa che tutte le pagine di testo ricercabile non sono ricercabili in quanto il testo è stato rasterizzato nella conversione ps. Fortunatamente, nel mio caso non importa.
C'è un modo per correggere o svuotare la tabella xrif di un file pdf senza perdere quali pagine sono ricercabili?
ho preso la soluzione di captaincomic e aggiunto il supporto per i nomi di file contenenti spazi, oltre a dare alcune informazioni sullo stato di avanzamento
#!/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.
ho scritto il seguente shell
script per risolvere questo per LaTeX
beamer
diapositive stile realizzati con inkscape
(I pdftk cat
le diapositive insieme nella presentazione finale PDF
& quindi aggiungere numeri di diapositiva utilizzando lo script di seguito):
#!/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
Lo script legge STDIN
& scrive STDOUT
diagnostica di stampa pdflatex
output su STDERR
.
Quindi, basta copiare e incollare il codice sopra in un file di testo, dire enumerate_slides.sh
, renderlo eseguibile (chmod +x enumerate_slides.sh
) & chiamare in questo modo:
./enumerate_slides.sh <input.pdf> output.pdf [2>/dev/null]
Dovrebbe essere facile da regolare questo a qualsiasi altro tipo del documento regolando il modello LaTeX
per utilizzare le opzioni di stile documentclass
, formato carta &.
modifica: sostituii echo
da $(which echo)
poiché in ubuntu
simbolici /bin/sh
a dash
che sostituisce il comando echo
da un guscio di sequenze interpretazione esodo interne di default & non fornendo la possibilità -E
per ignorare questo comportamento. Nota che in alternativa puoi sfuggire a tutti \
nel modello LaTeX come \\
.
edit: ho sostituito $(which echo)
da printf '%s'
poiché in zsh
, which echo
rendimenti echo: shell built-in command
invece di /bin/echo
. Vedere this question per dettagli sul motivo per cui ho deciso di utilizzare printf
alla fine.
mi piaceva l'idea di usare pspdftool (man page), ma ciò che cercavo era pagina x di formato y e lo stile del carattere per abbinare il resto della pagina.
Per conoscere i nomi dei caratteri utilizzati nel documento:
$ strings input.pdf | grep Font
Per ottenere il numero di pagine:
$ pdfinfo input.pdf | grep "Pages:" | tr -s ' ' | cut -d" " -f2
colla insieme con alcuni pspdftool
comandi:
$ 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;
Ecco il risultato:
- 1. È possibile aggiungere numeri di pagina e piè di pagina a docx SENZA specificare il modello?
- 2. Come aggiungere numeri senza +
- 3. Aggiunta di numeri di pagina tramite PDFBox
- 4. Come posso aggiungere numeri di riga a una griglia ExtJS?
- 5. come aggiungere matematica dinamica alla pagina web
- 6. Aggiungere numeri interi come stringhe a una variabile bash
- 7. Supporto browser per numeri di pagina CSS
- 8. Rimuovere e aggiungere la pagina a FragmentPagerAdapter
- 9. Come aggiungere una pagina all'inizio di ViewPager?
- 10. Genera numeri di pagina usando javascript/jquery?
- 11. Come aggiungere numeri dai campi di input dinamici?
- 12. Come aggiungere Dockerfile a una pagina del registro docker?
- 13. Numeri di pagina in stile LLNCS
- 14. Numeri di pagina CSS non funzionanti
- 15. Aggiungere un'animazione di arricciatura pagina a un NSView?
- 16. django paginator - Come mostrare tutti i numeri di pagina disponibili
- 17. Come aggiungere numeri di immagine in Google Documenti
- 18. Come aggiungere una pagina in un'applicazione cordova
- 19. FPDF Ottenere numeri di pagina al piè di pagina Ogni pagina in formato A4
- 20. Come aggiungere codice jQuery nella pagina HTML
- 21. Come posso aggiungere una vista a piè di pagina a NSTableView?
- 22. Come aggiungere il pulsante fisso in basso a destra nella pagina
- 23. Come aggiungere due stringhe come se fossero numeri?
- 24. Come posso aggiungere numeri di riga non selezionabili tramite mouse a vim?
- 25. Come impedire a Gson di esprimere numeri interi come float
- 26. Aggiungere un blog a una pagina Web esistente
- 27. Come aggiungere UIActivityIndicatorView al piè di pagina di UICollectionView?
- 28. Come aggiungere un'applicazione di tabulazione a una pagina con la "nuova finestra di dialogo di autenticazione"
- 29. Come aggiungere codice di testo in una pagina Web?
- 30. Ignorare i numeri di pagina nelle diapositive di backup
Override del 'operatore showpage' come mostrato in [questa risposta] (http://stackoverflow.com/a/6620599/477035) per una sostanza [domanda duplicato] (http://stackoverflow.com/ q/4766755/477035) – RedGrittyBrick
Vedere [La soluzione molto carina di Alan Munn su TeX SE] (https://tex.stackexchange.com/a/18762/3406). –