SORU
17 Mart 2009, Salı


PNG dönüştürme PDF

Bir PNG bir PDF (en az kapağı, başarıyla pdftk ile PDF ilk sayfa çıkartıyorum) dönüştürmek için çalışıyorum. Imagemagick dönüşümü yapmak için kullanıyorum:

convert cover.pdf cover.png

Bu çalışır, ama kapağı ne yazık ki.png hatalı (PDF alfa nesnenin düzgün işlenmiş değil) hale geliyor. Biliyorum ImageMagick kullanır GhostScript için dönüşüm ve eğer ben bunu doğrudan gs alabilirim istediğiniz sonuçları ama bence kullanın convert kütüphane gibi diğer araçları isterim kaldıraç.

GhostScript bu komut istenilen resim gerçekleştirir:

gs -sDEVICE=pngalpha -sOutputFile=cover.png -r144 cover.pdf

Herhangi bir şekilde GhostScript dönüştürmek yoluyla argüman geçmek ya da doğrudan GhostScript arama takılıp kalıyorum? merak ediyorum

CEVAP
31 Temmuz 2010, CUMARTESİ


Kullanabileceğiniz bir komut satırı ile iki komut (gs, convert) bağlı bir boru vasıtasıyla, Eğer ilk komut yazabilir çıkışı stdout, ve eğer ikinci bir okuma giriş stdin.

  1. Neyse ki, gs stdout yazabilir (... -o %stdout ...).
  2. Neyse ki, standart girdiden (convert -background transparent - output.png) okuyabilir dönüştürmek.

Sorun çözüldü:

  • GS alfa kanalı özel bir görüntü, işlemek için kullanılır
  • dönüştürme şeffaf bir arka plan oluşturmak için kullanılır
  • boru diskte geçici bir dosya yazılı önlemek için kullanılır.

Tam Çözüm:

gs -sDEVICE=pngalpha       \
   -o %stdout              \
   -r144 cover.pdf         \
   |                       \
convert                    \
   -background transparent \
   -                       \
    cover.png

Güncelleme

Eğer bir PDF Sayfa başına ayrı bir PNG sahip olmak istiyorsanız, %d sözdizimi kullanabilirsiniz:

gs -sDEVICE=pngalpha -o file-d.png -sDEVICE=pngalpha -r144 cover.pdf

Bu oluşturmak PNG adlı dosyaları page-000.png, page-001.png, ... (Not %dsayma, sıfır tabanlı -- file-000.png karşılık Sayfa 1 PDF, 001 Sayfa 2...

Ya da, eğer şeffaf arka plan, 100 sayfalık bir PDF için, bunu tutmak istiyorsanız

for i in {1..100}; do        \
                             \
  gs -sDEVICE=pngalpha       \
     -dFirstPage="${i}"      \
     -dLastPage="${i}"       \
     -o %stdout              \
     -r144 input.pdf         \
     |                       \
  convert                    \
     -background transparent \
     -                       \
      page-${i}.png ;        \
                             \
done

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Evan Coury

    Evan Coury

    29 NİSAN 2007
  • Makeup Lover

    Makeup Lover

    12 HAZİRAN 2011
  • Modus Recordings

    Modus Record

    26 Kasım 2008