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

  • Elly

    Elly

    3 EKİM 2005
  • Hidden Wolf TV

    Hidden Wolf

    1 EKİM 2009
  • TecNoob

    TecNoob

    15 AĞUSTOS 2013