Mac OS'ta PDF'yi komut satırında nasıl tamamen düzleştirebilirim?


16

Mac OS X Snow Leopard kullanıyorum. Form alanları, ek açıklamaları ve damgaları olan bir PDF dosyam var. Form alanlarının değiştirilememesi ve ek açıklamaların / damgaların artık düzenlenebilir olmaması için bu PDF'yi dondurmak (veya "düzleştirmek") istiyorum. Aslında bu PDF'lerin çoğuna sahip olduğum için, bunu komut satırında otomatik olarak yapmak istiyorum.

Başarı dereceleriyle denediğim / düşündüğüm bazı şeyler:

  • Önizleme ve Dosyaya Yazdır öğesinde açın. Bu, dosya boyutunu değiştirmeden tamamen düz bir PDF oluşturur. Otomatikleştirmenin tek yolu , kaçınmaya çalıştığım kludgy UI tabanlı bir AppleScript yazmak gibi görünüyor .
  • Acrobat Pro'da açın ve düzleştirmek için bir JavaScript işlevi kullanın . Yine, bunu komut satırında nasıl otomatikleştireceğinizden emin değilim.
  • Seçeneği pdftkile kullanın flatten. Ancak bu yalnızca damgaları ve diğer ek açıklamaları değil alanları oluşturur.
  • cupsfilterBirçok dosya biçiminden PDF oluşturabilen kullanın . Bunun gibi pdftksadece form alanları düzleşti.
  • Kullanım cups-pdfMac'in yazdırmasunucusu içine kanca ve baskı yerine bir PDF dosyasını kaydedin. Kullandığım MacPorts versiyonu . Ortaya çıkan dosya düz ama çok büyük. Bunu 8 MB'lık bir dosyada denedim; düzleştirilmiş PDF 358MB'dı! Belki de bu Ubuntu'da olduğu gibi bir ghostscript çağrısı ile birleştirilebilir İpucu: PDF dosya boyutunu komut satırından nasıl azaltabilirsiniz .

Diğer öneriler takdir edilecektir.


1
Automator.app bazı yerleşik pdf işleme seçeneklerine sahiptir. Belki bunlardan biri doğrudan veya yukarıdaki eylemlerden biriyle kombine olabilir.
Kassym Dorsel

Bu öğeleri içeren bir PDF örnek belgesi sağlayabilir misiniz?
Daniel Beck

Bence de. Şu anda tüm örneklerim öğrenci sınavları.
Matthew Leingang

Yanıtlar:


11

pdf2psVe ps2pdfarka arkaya kullanmayı deneyin . Biraz hantal ama 30 MB'lık belgemi 17 MB'a indirmeme yardımcı oldu. Çok isterdim ama yine de daha iyi. Bu fikri pdf'de şifre izinlerinden kurtulmak için bu yöntemi kullanan bir arkadaşımdan aldım.

pdf2ps your_pdf_file.pdf your_pdf_file.ps
ps2pdf your_pdf_file.ps your_pdf_file_from_ps.pdf

Umarım yardımcı olur!


3
GhostScript FTW! Bir boru kullanarak tek astarlı bir yere indirdim pdf2ps file.pdf - | ps2pdf - file_flat.pdf. Dosya 300K'dan 500K'ya çıktı, bu da büyük bir yüzde artışı oldu, ancak% 4400'lük bir artış gibi bir şey cups-pdfvermedi.
Matthew Leingang

Aslında daha şanslı vardı pdf2ps -q -sOutputFile=- file.pdf | ps2pdf - file_flat.pdf.
Matthew Leingang

4
Mac Eğer aracılığıyla yukarıdaki komutları kullanılabilir hale getirmek için Ghostscript'i yükleyebilirsiniz olduğunu kaydeden homebrew ile brew install ghostscript.
Nick

5

Son zamanlarda kullandığım şey bu. İşlevsel olarak aynı şeyi yaptığını düşünüyorum pdf2ps file.pdf - | ps2pdf - file_flat.pdf, ama benim için daha iyi çalışıyor gibi görünüyordu.

gs -sDEVICE=pdfwrite -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -sOutputFile=<newfile> <oldfile>

Ps2pdf çözümleri benim için başarısız oldu. Bu, PDF'deki yazı tiplerini yeniden endeksleyerek görünüşe göre çalıştı.
inkaphink

Bu komutların hiçbiri düzleşmez. Temel katmanları Önizleme'yi kullanarak kopyalayabilirsiniz, orijinal içerik bulunur.
Alain O'Dea

1

Alt isteğe bağlı olabilir, ancak bardak-pdf'i pdftk veya cupsfilter ile zincirlemeyi düşündünüz mü? Bahsettiğiniz gibi, cups-pdf düz bir pdf dosyası üretecek ve daha sonra kabul edilebilir bir boyuta getirmek için pdftk veya cupsfilter içinden geçirecek mi?

En Alternatif bir göz atın /System/Library/Printers/Libraries/convert Sen böyle bir şey yapmak mümkün olmalıdır

/System/Library/Printers/Libraries/convert -f input_file.pdf -o output_file.pdf -j "application/pdf"

Mac bilgisayarımda yok /System/Library/Printers/Libraries/convert. Denedim cupsfilter. PDF'den PDF'ye dönüştürürken dosyada değişiklik yapılmadı. PDF'den PS'ye ve sonra PDF'ye dönüştürürken ek açıklamalar kaybolur.
Matthew Leingang

1

UYARI: gs ve pdf2ps | ps2pdf PDF'leri DÜZELTMEYİN!

Gs veya pdf2ps ve ardından ps2pdf kullanmak , orijinal formdaki ek açıklamaların altındaki içeriğe sahip çok katmanlı bir PDF verecektir . Önizleme'de bu kusuru Tümünü Seç, ardından Kopyala ve ardından bir TextEdit penceresine (zengin metin modunda) kullanarak doğrulayabilirsiniz. Örneğin, redaksiyon ek açıklamaları altındaki metni veya grafikleri göreceksiniz. Bu içeriğin yasal olarak çıktıdan çıkarılması gerekiyorsa, bu çok kötü bir durumdur .

Çalışan Bir Çözüm

ImageMagick, aşağıdaki komutu kullanarak her sayfanın rasterleriyle yapılandırılabilir kalitede, çok sayfalı, tek katmanlı düzleştirilmiş PDF üretebilir:

convert -density 150 document_original.pdf document_flat.pdf

Bu komut, her sayfanın piksel tabanlı bir görüntüsünü 150 DPI'de oluşturarak document_original.pdf dosyasını rasterleştirir ve sonucu document_flat.pdf olarak verir.

Görüntü Kalitesi Üzerine Bir Not

Rasterleştirme nedeniyle ölçeklenemez (yakınlaştırma yapar ve metin veya orijinal vektör görüntülerin pikselleştiğini görürsünüz) PDF. Orijinalde milyon nokta dağılım grafikleri gibi çok karmaşık vektör içeriği yoksa, daha büyük bir dosya boyutuna sahip olacaktır.

Yoğunluğu değiştirerek , daha yüksek çözünürlüklü çıktılar için daha büyük dosya boyutu ile işlem yapabilirsiniz.

Tüm metinler, her sayfa görüntüsünde ham piksele dönüştürülecektir. Metin ve vektör diyagramları en çok acı çeker, bu nedenle kullanılabilir çıktı dosyaları elde edene kadar DPI ile deneme yapın.


1
Bu cevaba katkıda bulunduğunuz için teşekkür ederiz. 5 yıl önce yazdığım çözüm benim için çalışıyordu. Ama bir dahaki sefere bunu yapmak zorunda kaldığımda cevabınızı deneyeceğim (aslında çok yakında).
Matthew Leingang

Mantıklı. Ghostscript'in davranışının açıklamaları düzelterek değiştirdiğini düşünüyorum. -PreserveAnnots = false eklemeyi denedim ve hala işe yaramadı. Kaputun altında PDF işleme için Ghostscript kullanarak dönüştürün. Acrobat'ın yaptıklarını yapan bir şey istiyorum: ek açıklamaları tutar, arkasındaki içeriği kaldırır ve ortaya çıkarılan vektör görüntülerini korur. Yeni Acrobat'lı Document Cloud parçası, hassas veriler için onu kullanırken beni gerçekten sinirlendiriyor.
Alain O'Dea

0

Applescript muhtemelen komut satırına giden en iyi / en hızlı yoldur. Çalıştıktan sonra bir uygulama olarak kaydedebilir ve çalıştırmak için komut kabuğunuzda bir takma ad oluşturabilirsiniz. Daha sonra, diğer adınızı komut satırına yazmanız yeterlidir.


Ancak PDF'yi AppleScript'te düzleştirmenin en kolay yolu nedir? Kullanıcı arabirimini dosyaya yazdırmayı taklit etmek için komut dosyasını tercih etmem. Bu yavaş ve yavaş görünüyor.
Matthew Leingang
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.