Partia usuń komentarze z plików PDF

18

Jak mogę łatwo usunąć wszystkie komentarze i adnotacje (dodane za pomocą Foxit Reader) ze wszystkich plików PDF w folderze?

Andrzej
źródło
1
czy słusznym założeniem jest myślenie, że chcesz tylko sugestii za darmo (jak w piwie) lub za darmo (jak w wolności)?
Kurt Pfeifle,
@pipitas Interesuje mnie każde rozwiązanie.
Andrew

Odpowiedzi:

7

Właśnie wpadłem na ten problem i żadna z podanych tutaj odpowiedzi nie zadziałała. Co zrobił praca była rewritepdfnarzędziem z pakietu Ubuntu libcam-pdf-perl:

rewritepdf -C in.pdf out.pdf

Opakowanie tego w małe skrypty w celu usunięcia adnotacji ze wszystkich plików pdf w katalogu jest teraz łatwe:

for i in *.pdf; do rewritepdf -C '$i' '$i'.new; done
Uli Fahrenberg
źródło
Działa dobrze. :) Trochę pomocy: Pakiet Ubuntu (tj. Debian) znajduje się tutaj packages.debian.org/sid/perl/libcam-pdf-perl Zależności są automatycznie instalowane przy użyciu „Centrum oprogramowania Ubuntu”. (Och, uważaj na duże „-C”. Najpierw uruchomiłem „-c” i nic się nie wydarzyło, nawet nie wystąpił żaden błąd.)
loved.by.Jesus
5

Pod warunkiem, że korzystasz z systemu Unix:

cd <directory containing PDFs>
find . -type f -name '*.pdf' -exec perl -pi -e 's:/Annots \[[^]]+\]::g' {} +

Jest to hack, który usuwa wszystkie /Annotspolecenia z pliku PDF (polecenia, które rysują adnotacje). Pozostawia tam obiekty adnotacji (możesz otworzyć plik PDF za pomocą edytora tekstu i wyszukać je), po prostu nie są rysowane.

Divinenephron
źródło
Czy możesz wyjaśnić RE? Co oznacza [^]] + dopasowanie
jftuga
1
@jftuga, s:(zamiennik) /Annots \[(tekst „ /Annots [”) [^]]+(jeden lub więcej wystąpień dowolnego znaku oprócz „ ]”) \](dosłowny znak „ ]”) ::(zamień wszystko pasujące do poprzedniego na nic) g(w razie potrzeby zamień wiele razy w wierszu).
Divinenephron,
1
Jedną z potencjalnie mylących części wyrażenia regularnego jest to, że dosłownie ]zwykle trzeba uciec, ale nie zaraz po ^negacji.
Divinenephron,
Usuwa to również wewnętrzne linki do dokumentów (ponieważ, jak sądzę, są one również zaimplementowane w pliku pdf jako / Annots)
Alec Jacobson
3

Nie testowałem tego zbyt wiele, ale wygląda na to, że działa to następująco. Usuwa wszystkie adnotacje, z wyjątkiem wewnętrznych linków do dokumentów (których wydaje się, że nie ma tu żadnej odpowiedzi). Ten skrypt zależy od biblioteki python pdfrw .

#!/usr/bin/python

import sys, pdfrw

try:
    in_path = sys.argv[1]
    out = sys.argv[2]
except:
    print("Usage:\tannotclean IN.pdf OUT.pdf")
    exit(0)

reader = pdfrw.PdfReader(in_path)

for p in reader.pages:
    if p.Annots:
        # See PDF reference, Sec. 12.5.6 for all annotation types
        p.Annots = [a for a in p.Annots if a.Subtype == "/Link"]

pdfrw.PdfWriter(out, trailer=reader).write()

Stosowanie:

  1. Zapisz gdzieś jako skrypt (zakładam w twoim PATH), np /usr/local/bin/annotclean.
  2. annotclean in.pdf cleaned.pdf
  3. (opcjonalnie) przetwarzanie wsadowe:
# fish shell syntax
for p in **pdf # pdfs from current directory and subdirectories
    annotclean $p $p.new
    mv $p.new $p # overwrite the old
end 
rien333
źródło
2

Myślę, że możesz to zrobić najłatwiej poprzez „ponowne” przesłanie pliku PDF. Ponowne próbowanie oznacza: najpierw przekonwertuj plik na PostScript, a następnie przekonwertuj PostScript z powrotem na PDF. Zazwyczaj marszczenie jest marne, ponieważ zazwyczaj tracisz jakość i trochę zawartości. W twoim przypadku chcesz stracić treść. Ponowne smażenie można wykonać za pomocą Ghostscript (i plików wsadowych pomocnika wysyłanych wraz z nim - pobierz, gs900w32.exejeśli jesteś w systemie Windows), więc proszę bardzo, za pomocą 2 prostych poleceń:

pdf2ps.bat input.pdf output.ps
ps2pdf.bat output.ps input_refried.pdf
Kurt Pfeifle
źródło
1
To nie działa Wpisane komentarze pozostają (nie jako komentarze, ale jako część pdf).
Andrew
2
Jeśli komentarze są faktycznie dodawane do zawartości pliku PDF, można je usunąć tylko ręcznie. Rzeczywiste adnotacje PDF są osobne.
CarlF,
Czy jest jakiś sposób bez użycia jakiegokolwiek konwertera?
użytkownik
Usuwa to również wewnętrzne linki dokumentów.
Alec Jacobson
@AlecJacobson: Oczywiście. Po konwersji na PostScript tracisz dużo „bogatej” zawartości, która była częścią pliku PDF. PostScript nie ma możliwości reprezentowania ŻADNYCH łączy, nawet wewnętrznych łączy do dokumentów ....
Kurt Pfeifle
2

OK, powiedziałeś, że weźmiesz również pod uwagę komercyjne rozwiązanie ....

Polecam spróbować callas pdfToolbox . Jest dostępny dla systemów Windows i Mac OS X. (Posiadają również interfejs CLI dla systemu Linux, ale można z nim używać tylko wstępnie skonfigurowanych „profili”. Za pomocą graficznego interfejsu użytkownika systemu Windows można tworzyć własne profile i ponownie ich używać z jednak Linux CLI.

PdfToolbox ma wiele sposobów na manipulowanie i naprawianie wielu, wielu indywidualnych problemów z PDF.

Jednym z „Napraw” jest usunięcie wszystkich adnotacji.

Nie musisz wydawać żadnych pieniędzy, aby je najpierw przetestować; callas udziela 14-dniowych licencji próbnych za darmo.

Kurt Pfeifle
źródło
Rzeczywiście ma sposób na usunięcie wszystkich adnotacji, ale nie jestem pewien, jak wykonać zadanie wsadowe.
Andrew
Nie wiem o poprzednich wersjach --- ale najnowsza wersja pdfToolbox5 pozwala na uruchomienie go w trybie wsadowym z kompletnymi folderami zawierającymi pliki PDF .....
Kurt Pfeifle