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?


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

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.


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 

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

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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.