Пакетне видалення коментарів з PDF-файлів


18

Як я можу легко видалити всі коментарі та примітки (додані разом із програмою Foxit Reader) з усіх PDF-файлів у папці?


1
чи справедливе припущення вважати, що ви хочете лише пропонувати безкоштовні (як у пиві) чи безкоштовні (як на волі) рішення?
Курт Пфайфл

@pipitas Мене цікавить будь-яке рішення.
Андрій

Відповіді:


7

Я просто перейнявся цією проблемою, і жоден із наведених тут відповідей не працював на мене. Що ж робота була rewritepdfінструментом з пакета Ubuntu libcam-pdf-perl:

rewritepdf -C in.pdf out.pdf

Згорнути це в невеликий сценарій для видалення приміток із усіх файлів PDF у каталозі зараз просто:

for i in *.pdf; do rewritepdf -C '$i' '$i'.new; done

Це спрацювало чудово :) Допомога: Пакет Ubuntu (тобто, debian) знаходиться тут пакунків.debian.org/ sid/ perl/ libcam-pdf- perl Залежності автоматично встановлюються за допомогою "центру програмного забезпечення Ubuntu". (О, і будьте уважні зі столицею "-C". Я вперше пробіг "-c", і нічого не сталося, навіть помилки не було.)
loved.by.Jesus

5

За умови, що ви перебуваєте в системі Unix:

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

Це злом, який видаляє всі /Annotsкоманди з PDF (команди, які малюють анотації). Він залишає там об’єкти анотацій (ви можете відкрити PDF за допомогою текстового редактора і шукати їх), вони просто не намальовані.


Чи можете ви пояснити RE? Що відповідає [^]] + відповідає
jftuga

1
@jftuga, s:(заміна) /Annots \[(текст " /Annots [") [^]]+(один або кілька екземплярів будь-якого символу, крім " ]") \](буквальний символ " ]") ::(замініть будь-що, що відповідає першому, нічим) g(замініть кілька разів на рядок, якщо потрібно).
Divinenephron

1
Одна з потенційно заплутаних частин виразів полягає в тому, що буквально ]зазвичай потрібно уникати, але не відразу після ^заперечення.
Divinenephron

Це також видаляє внутрішні посилання на документи (як, я вважаю, вони реалізовані в pdf як / Annots теж)
Алек Джейкобсон

3

Не випробовував її багато, але наступне, здається, працює. Він видаляє всі примітки, крім внутрішніх посилань на документи (на що, схоже, жоден з відповідей тут). Цей скрипт залежить від бібліотеки 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()

Використання:

  1. Збережіть як сценарій десь (я припускаю у вашому PATH), напр /usr/local/bin/annotclean.
  2. annotclean in.pdf cleaned.pdf
  3. (необов'язково) пакетна обробка:
# 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

Я думаю, що ви можете це зробити найпростіше, "перезавантаживши" PDF. Переосмислення означає: спочатку перетворіть файл у PostScript, а потім перетворіть PostScript назад у PDF. Зазвичай пересмаження нахмуриться, тому що зазвичай ви втрачаєте якість та певний вміст. У вашому випадку ви хочете втратити вміст. Повторне обсмажування можна здійснити за допомогою Ghostscript (і допоміжні пакетні файли, що доставляють його - завантажте, gs900w32.exeякщо ви перебуваєте в Windows), тож ось вам, з двома простими командами:

pdf2ps.bat input.pdf output.ps
ps2pdf.bat output.ps input_refried.pdf

1
Це не працює. Письмові коментарі залишаються (не як коментарі, а як частина pdf).
Андрій

2
Якщо коментарі дійсно додані до вмісту PDF, їх можна видалити лише вручну. Фактичні PDF-примітки окремо.
КарлФ

Чи є спосіб без використання будь-якого перетворювача?
користувач

Це також видаляє внутрішні посилання на документ.
Алек Джейкобсон

@AlecJacobson: Звичайно. Якщо ви перетворюєте на PostScript, ви втрачаєте багато "багатого" вмісту, що входив до PDF. PostScript не має засобів для представлення будь-яких посилань, навіть не внутрішніх посилань на документи ....
Kurt Pfeifle

2

Гаразд, ви сказали, що також можете розглянути комерційне рішення ....

Я рекомендую вам спробувати callas pdfToolbox . Він доступний для Windows та Mac OS X. (Вони також мають CLI для Linux, але ви можете використовувати лише попередньо налаштовані "профілі". За допомогою GUI Windows ви можете створювати власні профілі та повторно використовувати їх за допомогою Linux CLI, однак.

У pdfToolbox є багато-багато і багато способів маніпулювання та виправлення багатьох, багатьох індивідуальних проблем з PDF.

Одне з «виправлень» - це видалення всіх приміток.

Вам не потрібно викладати жодних грошей, щоб перевірити їх спочатку; callas безкоштовно видає пробні ліцензії на 14 днів.


Дійсно є спосіб видалити всі анотації, але я не впевнений, як виконати пакетну роботу.
Андрій

Давно про попередні версії --- але остання версія pdfToolbox5 дозволяє запускати її в пакетному режимі проти повних папок, що містять PDF-файли .....
Kurt Pfeifle
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.