Czy ktoś może mi powiedzieć, jak usunąć ostatnią stronę pliku PDF, używając PDFtk?Usunąć ostatnią stronę pliku PDF za pomocą PDFtk?
Odpowiedz
Korzystanie z operacji cat
i określanie zakresu stron.
pdftk infile.pdf cat 1-r2 output outfile.pdf
Musisz dowiedzieć się liczbę stron, a następnie użyć tego z funkcją pdftk kotów, ponieważ (AFAICT) pdftk nie pozwala, aby określić „offset od ostatniego”.
Narzędzie takie jak "pdfinfo" z Poppler (http://poppler.freedesktop.org/) może to zapewnić.
Opakowanie to w trochę bash scripting można łatwo zautomatyzować ten proces:
page_count=`pdfinfo "$INFILE" | grep 'Pages:' | awk '{print $2}'`
page_count=$(($page_count - 1))
pdftk A="$INFILE" cat A1-$page_count output "$OUTFILE"
Oczywiście Dodawanie parametrów, sprawdzanie błędów i co-nie też mogą być umieszczone we wspomnianym skrypcie:
#! /bin/sh
### Path to the PDF Toolkit executable 'pdftk'
pdftk='/usr/bin/pdftk'
pdfinfo='/usr/bin/pdfinfo'
####################################################################
script=`basename "$0"`
### Script help
if [ "$1" = "" ] || [ "$1" = "-h" ] || [ "$1" = "--help" ] || [ "$1" = "-?" ] || [ "$1" = "/?" ]; then
echo "$script: <input-file.PDF> [<output-file.PDF>]"
echo " Removes the last page from the PDF, overwriting the source"
echo " if no output filename is given"
exit 1
fi
### Check we have pdftk available
if [ ! -x "$pdftk" ] || [ ! -x "$pdfinfo" ]; then
echo "$script: The PDF Toolkit and/or Poppler doesn't seem to be installed"
echo " (was looking for the [$pdftk] and [$pdfinfo] executables)"
exit 2
fi
### Check our input is OK
INFILE="$1"
if [ ! -r "$INFILE" ]; then
echo "$script: Failed to read [$INFILE]"
exit 2
fi
OUTFILE="$2"
if [ "$OUTFILE" = "" ]; then
echo "$script: Will overwrite [$INFILE] if processing is ok"
fi
timestamp=`date +"%Y%m%d-%H%M%S"`
tmpfile="/tmp/$script.$timestamp"
page_count=`$pdfinfo "$INFILE" | grep 'Pages:' | awk '{print $2}'`
page_count=$(($page_count - 1))
### Do the deed!
$pdftk A="$INFILE" cat A1-$page_count output "$tmpfile"
### Was it good for you?
if [ $? -eq 0 ]; then
echo "$script: PDF Toolkit says all is good"
if [ "$OUTFILE" = "" ]; then
echo "$script: Overwriting [$INFILE]"
cp -f "$tmpfile" "$INFILE"
else
echo "$script: Creating [$OUTFILE]"
cp -f "$tmpfile" "$OUTFILE"
fi
fi
### Clean Up
if [ -f "$tmpfile" ]; then
rm -f "$tmpfile"
fi
To polecenie awk można zmodyfikować w celu zmniejszenia, nieco upraszczając skrypt: grep Pages | awk '{printf ("% d", 2 $ - 1); } "To sprawia, że $ (($ page_count - 1)) jest zbędna. – Kingsley
Nie ma potrzeby, aby 'pdfinfo' faktycznie,' pdftk' dostarcza liczbę stron z podkomendą 'dump_data': tworzy linię' NumberOfPages: 8' – kebs
Pamiętaj też, że nie musisz znać strony liczyć, aby usunąć ostatnią stronę (przynajmniej dla wersji pdftk 1.45 i nowszych). Możesz użyć '1-r2' do wskazania pierwszej do drugiej strony. Zobacz dokumentację 'pdftk', która mówi: Możesz odwoływać się do numerów stron w odwrotnej kolejności, poprzedzając je literą r. Na przykład strona r1 jest ostatnią stroną dokumentu, r2 jest następną stroną dokumentu, a rend jest pierwszą stroną dokumentu. Możesz również użyć tego prefiksu w zakresach, na przykład r3-r1 to ostatnie trzy strony pliku PDF. – Six
Dzięki cpdf możesz odwoływać się do strony, określając odległość od końca dokumentu, używając tyldy i początku.
więc możemy zrobić
cpdf in.pdf 1-~2 -o out.pdf
Dziękujemy za stworzenie takiego narzędzia. Działa jak magia. Jedyne, czego bym sobie życzył: pliku wyjściowego nie określono, plik "in.pdf" ma automatycznie zmienioną nazwę (np. "In_1--2.pdf") – lanenok
Chcę również powtórzyć, co za niesamowity kawałek zestawu to jest! Wyjątkowo łatwo jest przyciąć pierwszą lub kilka ostatnich stron (lub cokolwiek innego). Nawet dystrybucja oprogramowania jest perfekcyjna, co składa się z pojedynczego statycznego pliku binarnego (dla systemów Linux 32, Linux 64, OSX i Windows). Zawiera również świetną dokumentację PDF. Jestem zaskoczony, że nigdy wcześniej nie spotkałem się z oprogramowaniem, być może dlatego, że nie jest to open source (tylko darmowe do niekomercyjnego użytku z tego, co rozumiem). – Six
- 1. pdftk problemy fill_form UTF8
- 2. pdftk i qpdf, aby zresetować zabezpieczenie komentowania PDF
- 3. Jak dołączyć stronę do pliku PDF w dokumencie PDF w Pythonie
- 4. Przeczytaj pdf za pomocą iText
- 5. Generowanie pliku PDF za pomocą Swift
- 6. Edytuj metadane pliku PDF za pomocą C#
- 7. Jak znaleźć pustą stronę w pliku pdf
- 8. Spring Data JPA, czyli jak zdobyć ostatnią stronę poprzez stronę
- 9. jak odczytać ostatnią linię w pliku tekstowym za pomocą java
- 10. pdftk nie będzie dekompresować strumieni danych
- 11. Konwersja stron pliku PDF do obrazów za pomocą itextsharp
- 12. Konwersja pliku HTML Div do pliku PDF za pomocą Jquery
- 13. Jak usunąć autora z przesłanego pliku PDF?
- 14. Generowanie wykresy w pliku PDF za pomocą TCPDF
- 15. ZF2 paginator nie pokazują ostatnią stronę
- 16. Jak usunąć pierwszą i ostatnią linię z pliku tekstowego C#?
- 17. Jak znaleźć i zastąpić tekst w istniejącym pliku PDF z pdftk (lub innej aplikacji wiersza poleceń)
- 18. Wyczyść stronę HTML za pomocą JavaScriptu
- 19. Usunąć za pomocą QueryOver?
- 20. PHP + PDF, jak zapisać pobrany plik PDF za pomocą curl?
- 21. Przekształcanie pliku PDF w działający tekst za pomocą C#
- 22. Problemy z pobieraniem pliku pdf za pomocą R
- 23. Konwertowanie pliku PDF na serię obrazów za pomocą Pythona
- 24. Łączenie danych FDF do pliku PDF za pomocą PHP
- 25. Howto: Popraw jakość pliku PDF przed OCR za pomocą C#
- 26. Problem z dodaniem javascript do pliku PDF za pomocą iTextSharp
- 27. Wyodrębnij tekst i obrazy z pliku PDF za pomocą iText5
- 28. Wyszukiwanie tekstu w pliku PDF za pomocą języka Python?
- 29. Wyodrębnianie tekstu z pliku PDF za pomocą PDFMiner w python?
- 30. Jak dodać obraz do pliku PDF za pomocą PDFClown
Jeśli chcesz usunąć więcej niż jedną stronę, można zmienić zakres, na przykład '1-r3' robi wszystko, ale ostatnie dwie strony. – mlissner