Bir klasördeki tüm PDF'lerden (Foxit Reader ile eklenen) tüm yorumları ve ek açıklamaları nasıl kolayca kaldırabilirim?
Bir klasördeki tüm PDF'lerden (Foxit Reader ile eklenen) tüm yorumları ve ek açıklamaları nasıl kolayca kaldırabilirim?
Yanıtlar:
Ben sadece bu sorunun üstesinden geldim ve burada verilen cevapların hiçbiri benim için işe yaramadı. Ne işe yaradırewritepdf
Ubuntu paketinin aracıydı libcam-pdf-perl
:
rewritepdf -C in.pdf out.pdf
Bir dizindeki tüm pdf dosyalarından ek açıklamaları kaldırmak için bunu küçük bir komut dosyasına sarmak artık kolay:
for i in *.pdf; do rewritepdf -C '$i' '$i'.new; done
Unix sisteminde olmanız şartıyla:
cd <directory containing PDFs>
find . -type f -name '*.pdf' -exec perl -pi -e 's:/Annots \[[^]]+\]::g' {} +
Bu, /Annots
PDF'deki tüm komutları (ek açıklamaları çizen komutlar) kaldıran bir saldırıdır. Ek açıklama nesnelerini orada bırakır (PDF'yi bir metin düzenleyicisiyle açabilir ve arayabilirsiniz), bunlar çizilmez.
s:
(yerine) /Annots \[
(metin " /Annots [
') [^]]+
(yanında herhangi bir karakterin bir veya daha fazla örneği' ]
') \]
(literal karakter' ]
") ::
(bir şey hiçbir şey eski eşleşen değiştirin) g
(gerekirse satır başına birden çok kez değiştirin).
]
Normal ifadenin potansiyel olarak kafa karıştırıcı bir parçası, normalde bir değişmezin kaçması gerektiğidir, ancak bir ^
olumsuzlamadan hemen sonra değil .
Çok fazla test etmedim, ancak aşağıdakiler işe yarıyor gibi görünüyor. Dahili belge bağlantıları (buradaki yanıtların hiçbirinin yapamadığı) hariç tüm ek açıklamaları siler . Bu komut dosyası pdfrw python kütüphanesine bağlıdır .
#!/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()
Kullanımı:
PATH
), örneğin /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
Ben düşünüyorum siz "refrying" PDF tarafından en kolay yapabilir. Yeniden doldurmak, önce dosyayı PostScript'e, ardından PostScript'i tekrar PDF'ye dönüştürmek anlamına gelir. Genellikle kızarma kaşlarını çatar, çünkü genellikle kaliteyi ve içeriği kaybedersiniz. Sizin durumunuzda içeriği kaybetmek istiyorsunuz . Yeniden kızartma Ghostscript ile yapılabilir (ve onunla birlikte gelen yardımcı toplu iş dosyaları - gs900w32.exe
Windows'daysanız indirin), böylece işte 2 kolay komutla:
pdf2ps.bat input.pdf output.ps
ps2pdf.bat output.ps input_refried.pdf
Tamam, sen de ticari bir çözüm düşüneceksin demiştin ...
Callas pdfToolbox'ı denemenizi tavsiye ederim . Windows ve Mac OS X için kullanılabilir. (Linux için de CLI'leri vardır, ancak yalnızca önceden yapılandırılmış "profilleri" kullanabilirsiniz. Windows GUI ile özel profillerinizi oluşturabilir ve bunları yeniden kullanabilirsiniz yine de Linux CLI.
PdfToolbox çok sayıda bireysel PDF sorununu düzeltmek ve düzeltmek için çok ve çok fazla yol sunar.
"Düzeltmeler" den biri tüm ek açıklamaları kaldırmaktır.
Önce test etmek için para harcamanıza gerek yok; callas ücretsiz 14 günlük deneme lisansı verir.