Как я могу легко удалить все комментарии и аннотации (добавленные с помощью Foxit Reader) из всех PDF-файлов в папке?
Как я могу легко удалить все комментарии и аннотации (добавленные с помощью Foxit Reader) из всех PDF-файлов в папке?
Ответы:
Я просто упал на эту проблему, и ни один из ответов, приведенных здесь, не работал для меня. Что же работа была rewritepdf
инструментом из пакета Ubuntu libcam-pdf-perl
:
rewritepdf -C in.pdf out.pdf
Обернуть это в небольшой сценарий для удаления аннотаций из всех файлов PDF в каталоге теперь легко:
for i in *.pdf; do rewritepdf -C '$i' '$i'.new; done
Если вы работаете в системе Unix:
cd <directory containing PDFs>
find . -type f -name '*.pdf' -exec perl -pi -e 's:/Annots \[[^]]+\]::g' {} +
Это хак, который удаляет все /Annots
команды из PDF (команды, которые рисуют аннотации). Он оставляет там объекты аннотаций (вы можете открыть PDF с помощью текстового редактора и искать их), они просто не прорисованы.
s:
(заменить) /Annots \[
(текст " /Annots [
") [^]]+
(один или несколько экземпляров любого символа, кроме " ]
") \]
(буквальный символ " ]
") ::
(заменить все, что соответствует первому, ничем) g
(при необходимости заменить несколько раз в строке).
]
обычно должен быть экранирован, но не сразу после ^
отрицания.
Много не проверял, но, похоже, работает следующее. Он удаляет все аннотации, кроме внутренних ссылок на документы (что, похоже, не дает ни один из ответов). Этот скрипт зависит от библиотеки 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()
Использование:
PATH
), например /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
Я думаю, что вы можете сделать это проще всего, "повторно" PDF. Повторное использование означает: сначала преобразовать файл в PostScript, затем преобразовать PostScript обратно в PDF. Обычно повторное осуждение осуждается, потому что обычно вы теряете качество и некоторый контент. В вашем случае вы хотите потерять контент. Повторное обжаривание может быть выполнено с помощью Ghostscript (и пакетных файлов помощника, поставляемых вместе с ним - загрузите, gs900w32.exe
если вы работаете в Windows), так что все готово, с помощью двух простых команд:
pdf2ps.bat input.pdf output.ps
ps2pdf.bat output.ps input_refried.pdf
Хорошо, вы сказали, что вы также рассмотрите коммерческое решение ....
Я бы порекомендовал вам попробовать каллы pdfToolbox . Он доступен для Windows и Mac OS X. (У них также есть CLI для Linux, но вы можете использовать только предварительно настроенные «профили» с ним. С помощью графического интерфейса Windows вы можете создавать свои собственные профили и повторно использовать их с Linux CLI, хотя.
У pdfToolbox есть много-много-много способов манипулировать и исправлять множество проблем PDF.
Одним из «исправлений» является удаление всех аннотаций.
Вам не нужно выкладывать деньги, чтобы сначала их проверить; Каллас выдает 14-дневные пробные лицензии бесплатно.