Jak mogę łatwo usunąć wszystkie komentarze i adnotacje (dodane za pomocą Foxit Reader) ze wszystkich plików PDF w folderze?
Jak mogę łatwo usunąć wszystkie komentarze i adnotacje (dodane za pomocą Foxit Reader) ze wszystkich plików PDF w folderze?
Odpowiedzi:
Właśnie wpadłem na ten problem i żadna z podanych tutaj odpowiedzi nie zadziałała. Co zrobił praca była rewritepdf
narzę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
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 /Annots
polecenia 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.
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).
]
zwykle trzeba uciec, ale nie zaraz po ^
negacji.
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:
PATH
), np /usr/local/bin/annotclean
.annotclean in.pdf cleaned.pdf
# 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
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.exe
jeś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
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.