Jeśli masz duży dokument (500 stron +) w PostScript i chcesz dodać numery stron, czy ktoś wie, jak to zrobić?Jak dodać numery stron do Postscript/PDF
Odpowiedz
To może być rozwiązanie:
- nawrócony postscriptum do pdf za pomocą
ps2pdf
- utworzyć plik LaTeX i wstawić do stron przy użyciu pdfpages pakiet (
\includepdf
) - użytkowania
pagecommand={\thispagestyle{plain}}
czy coś z pakietu fancyhdr w argumentach\includepdf
- jeżeli wyjście postscript jest wymagane, przekonwertuj wyjście pdflatex z powrotem na postscript poprzez
pdf2ps
Myślę, że to świetny pomysł, ale nie mam go działa. Numery stron nie wstawiają * nad * stronami \ includepdf. –
Użyłeś czegoś takiego jak '\ includepdf [pages = -, pagecommand = {\ thispagestyle {plain}}] {document.pdf}'? – rcs
To jest zasadniczo to, co Alan Munn robi w [jego rozwiązaniu] (https://tex.stackexchange.com/a/18762/3406), pomijając rzeczy na PS. –
Być może pstops (część psutils) może być używany do tego?
Spędziłem na nim sporo czasu i wygląda na to, że psutils tego nie zrobią - chyba że czegoś mi brakuje. –
Och, to dawno użyłem dopisek, ale szybki dip do błękitnego książki powie :) www-cdf.fnal.gov/offline/PostScript/BLUEBOOK.PDF
Z drugiej strony ręka, Adobe Acrobat i trochę javascript również czynić cuda;)
Alternatywnie, znalazłem to: http://www.ghostscript.com/pipermail/gs-devel/2005-May/006956.html, który wydaje się pasowały (nie spróbować)
Zakładam, że jesteś poszukuje rozwiązania opartego na PS. W PS nie ma operatora na poziomie strony, który pozwoli ci to zrobić. Musisz dodać stopkę-rodzaj rzeczy w sekcji PageSetup
dla każdej strony. Każdy język skryptowy powinien być w stanie Ci pomóc.
Widziałem rozwiązanie z Perl w http://www.osti.gov/bridge/product.biblio.jsp?query_id=0&page=0&osti_id=666084 –
podstawie RCS zaproponowanych rozwiązań, ja co następuje:
Stary dokument do example.pdf
i pobiegł pdflatex addpages
, gdzie addpages.tex
brzmi:
\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}
lub alternatywnie, na stronach dwustronne (tj numer strony konsekwentnie na zewnątrz):
\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}
Łatwy sposób na zmianę marginesów nagłówka:
% set margins for headers, won't shrink included pdfs
% you can remove the topmargin/oddsidemargin/evensidemargin lines
\usepackage[margin=1in,includehead,includefoot]{geometry}
Kiedyś dodawałem numery stron do mojego pliku pdf, używając lateksu, jak w zaakceptowanej odpowiedzi.
Teraz znalazłem łatwiejszy sposób: Zastosowanie enscript
do tworzenia pustych stron z nagłówkiem zawierającym numer strony, a następnie użyj pdftk
z opcją multistamp
umieścić nagłówek na pliku.
Ten skrypt bash oczekuje plik pdf jak to tylko parametr:
#!/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
ostrzeżenie dla innych użytkowników: tylko od budowania 1.43 pdftk ma * funkcja multistamp * - odnośnie do kodu Mogę zasugerować wyjście = "$ {1% 03d.pdf} -header.pdf" by zerować wyrównanie – Dingo
Multistamp jest świetny. Mimo to Enscript nie jest zbyt elastyczny w tym przypadku - próbowałem uzyskać numery linii wyśrodkowane w stopce, z czcionką, którą chcę itp. ... W efekcie stworzyłem 1000 stron za pomocą mojego edytora tekstu z automatycznymi numerami linii w stopce. Potem rozprowadzam to na moich plikach. –
To nie działa dla mnie. Bucle nie iteruje, próbowałem kodowania wartości $ pagenum, ale nic. – xsubira
można po prostu użyć
pspdftool
w w ten sposób:
pspdftool 'number(x=-1pt,y=-1pt,start=1,size=10)' input.pdf output.pdf
patrz Te dwa przykłady (nienumerowane i numerach PDF z pspdftool)
numerowany PDF
numerach PDF
z tym jako pierwszy argument wiersza polecenia:
number(start=1, size=40, x=297.5 pt, y=10 pt)
Działa to świetnie, ale zrywa wewnętrzne i zewnętrzne linki – jdewit
Mówiąc o uszkodzonych linkach, te przykładowe hiperłącza .pdf są zepsute. – foobarbecue
Przepraszam, dołożę wszelkich starań, aby jak najszybciej wymienić – Dingo
nawiązaniu do rozwiązania captaincomic za, mam przedłużony go wesprzeć uruchomienie numeracji stron w dowolnej strony.
Wymaga enscript, pdftk 1,43 um lub więcej i pdfjam (na 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
np .. to miejsce w /usr/local/bin/pagestamp.sh i wykonanie takich jak:
pagestamp.sh doc.pdf 3
Ten rozpocznie numer strony, na stronie 3 .. przydatna, gdy masz osłonowymi, tytuł strony i spis treści, itp
niefortunne rzeczą jest opcja --footer tego enscript jest zepsuty, więc nie można uzyskać numerowania stron na dole za pomocą tej metody.
Próbowałem pspdftool (http://sourceforge.net/projects/pspdftool).
I w końcu dostałem go do pracy, ale najpierw mam ten błąd:
pspdftool: xreftable read error
Plik źródłowy został stworzony z pdfjoin od pdfjam i zawierał kilka skanów z mojego Epson Workforce jak również wygenerowany strony tagów. Nie mogłem wymyślić sposobu na naprawienie tabeli odnośników, więc przekonwertowałem na ps z pdf2ps iz powrotem na pdf z pdf2ps. Wtedy mógłbym to wykorzystać, aby uzyskać ładne numery stron w prawym dolnym rogu:
pspdftool 'number(start=1, size=20, x=550 pt, y=10 pt)' input.pdf output.pdf
Niestety, oznacza to, że wszelkie strony wyszukiwania tekstu nie można przeszukiwać, ponieważ tekst był rasteryzowane w konwersji ps. Na szczęście w moim przypadku nie ma to znaczenia.
Czy istnieje sposób naprawienia lub opróżnienia tabeli odnośników pliku PDF bez utraty stron do przeszukiwania?
Wziąłem rozwiązanie captaincomic i dodano wsparcie dla nazwy plików zawierające spacje, plus daje trochę więcej informacji o postępach
#!/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.
napisałem następujący shell
skrypt rozwiązać ten dla LaTeX
beamer
slajdy stylu produkowanych z inkscape
(I pdftk cat
slajdy razem w końcowej prezentacji PDF
& następnie dodać numery slajdów za pomocą skryptu poniżej):
#!/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
Scenariusz odczytuje STDIN
zapisuje STDOUT
drukowanie diagnostyczne pdflatex
wyjście do STDERR
.
Więc po prostu skopiować i wkleić powyższy kod w pliku tekstowym, powiedzmy enumerate_slides.sh
, sprawiają, że plik wykonywalny (chmod +x enumerate_slides.sh
) & nazwać tak:
./enumerate_slides.sh <input.pdf> output.pdf [2>/dev/null]
Powinno być łatwo dostosować to do innego rodzaju dokumentu, dostosowując szablon LaTeX
, aby użyć odpowiedniego stylu stylu documentclass
, rozmiar papieru: &.
edit: Wymieniłem echo
przez $(which echo)
ponieważ w ubuntu
dowiązania /bin/sh
do dash
który zastępuje komendę echo
przez skorupę wewnętrznych ciągów ewakuacyjnych ustne domyślnie & nie zapewniając możliwość -E
aby to zmienić. Zauważ, że alternatywnie możesz uciec od wszystkich \
w szablonie LaTeX jako \\
.
edit: Wymieniłem $(which echo)
przez printf '%s'
ponieważ w zsh
, which echo
powraca echo: shell built-in command
zamiast /bin/echo
. Zobacz szczegóły: this question, dlaczego zdecydowałem się na końcu używać printf
.
Podobał mi się pomysł wykorzystania pspdftool (man page), ale co mi po tym był strona x z y formatu i stylu czcionki, aby dopasować resztę strony.
Aby dowiedzieć się więcej na temat nazw czcionek użytych w dokumencie:
$ strings input.pdf | grep Font
aby uzyskać liczbę stron:
$ pdfinfo input.pdf | grep "Pages:" | tr -s ' ' | cut -d" " -f2
przykleić go razem z kilkoma pspdftool
poleceń:
$ 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;
Oto wynik:
- 1. Jak dodać numery wierszy do siatki ExtJS?
- 2. Jak dodać numery niesekwencyjne do zakresu?
- 3. Numery stron w stylu LLNCS
- 4. Nie działa numery stron CSS
- 5. jak dodać meta pole do wordpress stron
- 6. JavaFX 8 Numery stron stron paginacji na górze
- 7. Pagination nie poprawne numery stron wyświetlacz CodeIgniter
- 8. Jak zresetować numery stron w kanhtmltopdf na specjalnym znaczniku
- 9. Wyświetl tylko niektóre numery stron według paginacji django
- 10. Jak dodać numerację stron w wyszukiwarce elastycznej agregacji
- 11. Jak zdobyć numery stron w pdf generowane przez html z wkhtmltopdf
- 12. Jak dodawać numery zdjęć do Dokumentów Google?
- 13. Dodać numery duże i małe czytelny dla człowieka
- 14. Dodawanie numerów stron za pomocą PDFBox
- 15. Jak ustawić numery linii domyślnie w vim?
- 16. Jak działają aplikacje do wyświetlania stron internetowych?
- 17. Jak dodać do BigDecimal
- 18. Jak uzyskać numery stron, które mają być wyświetlane w raportach programu microsoft rldc (tryb lokalny) po wyeksportowaniu do pliku pdf?
- 19. Jak dodać znacznik kanoniczny do stron pochodzących z tego samego łącza?
- 20. Jak komputer mnoży 2 numery?
- 21. Jak dodać niestandardową stronę szablonu do antresoli?
- 22. Jak dodać pływające podpowiedzi do reagowania natywnego?
- 23. Jak używać KNPPaginatorBundle do dzielenia stron za pomocą repozytorium Doctrine?
- 24. Kalkulator Java dodaj numery do pola tekstowego
- 25. lateks, książka w stylu książkowym, w jaki sposób numery stron są zawsze na dole?
- 26. wyniki Python cProfile: dwa numery do ncalls
- 27. Dodawanie javascript do wszystkich stron w OpenCart
- 28. PHP 5 do 7 migracja - Numery porównanie
- 29. Zastosowanie reified ograniczenia do 3 numery kolejnych
- 30. Jak dodać pliki do oznaczania Github do witryny maven
zmieniane niezależnie od 'showpage' operator, jak pokazano na tej odpowiedzi] [(http://stackoverflow.com/a/6620599/477035) w zasadniczo [duplikatu przedmiotowym] (http://stackoverflow.com/ q/4766755/477035) – RedGrittyBrick
Zobacz [Bardzo ładne rozwiązanie Alana Munna na TeX SE] (https://tex.stackexchange.com/a/18762/3406). –