PDF'i Image'a nasıl dönüştürebilirim?


327

PDF sayfalarını görüntülere dönüştürme gereksinimim var. Bazı metinleri yazılı olan bir arka plan görüntüsü vardır, bu yüzden bunu görüntü olarak kaydettiğimde sadece arka plan görüntüsü kaydedildi.

Aynı için mevcut herhangi bir yazılım var mı, böylece sayfanın tamamı görüntüye dönüştürülebilir?


Görünüşe göre inkscape ile de mümkündür: stackoverflow.com/a/15484727/32453
rogerdpack

Yanıtlar:


299
  1. İmagemagick'i yükleyin .

  2. PDF'nin bulunduğu bir terminal kullanarak:

    • Tüm belge için:

      convert -density 150 input.pdf -quality 90 output.png
      
    • Tek sayfa için:

      convert -density 150 input.pdf[666] -quality 90 output.png
      

Bu sayede:

  • PNG, JPG veya (hemen hemen) başka herhangi bir görüntü formatı seçilebilir.

  • -density xxxDPI’yı xxx(ortak 150 ve 300’dür)

  • -quality xxxxxxPNG, JPG ve MIFF dosya formatları için sıkıştırmayı ayarlar (100, sıkıştırma yok demektir).

  • [666]yalnızca 667. sayfayı PNG'ye dönüştürür (sıfır tabanlı numaralandırma, böylece [0]1. sayfadır).

  • Diğer tüm seçenekler (örneğin kırpma, gri tonlama, vb.) Image Magic'in web sitesinde görülebilir .


2
Olduğu gibi cevap işe yarıyor ama çözüm çok zayıf. Bu nedenle şu anda yararlı bir cevap değil. Belki, dönüştürebilen bazı parametreler varsa bu değişebilir.
Elijah Lynn

48
Bu cevap çok daha yüksek kalitede askubuntu.com/a/50180/11929
Elijah Lynn

6
Yoğunluğu, -density 300
OHLÁLÁ

4
Öyleyse, yoğunluk belirtmenin, buradaki diğer cevaplar kadar "iyi" olduğunu söyleyebilir mi? Ayrıca, takipçilere bir not olarak, ImageMagick aslında gs -q NOPROMPT ...-sDEVICE=pngalpha -r150x150 -sOutputFile=/var/tmp/Yf%d -f/var/tmp/L -f/var/tmp/Fic1convert: no images defined output.png
pdf'den png ex'e

4
İmagemagic'den içinde PDF Ayrıştırma devre dışı bırakıldı - bugs.archlinux.org/task/59778 - bu düzenleyerek elle etkinleştirilebilir /etc/ImageMagick-7/policy.xmldosya ve kaldırma PDFden<policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />
Jezor

393

pdftoppmBir PDF'yi PNG'ye dönüştürmek için kullanabilirsiniz :

pdftoppm input.pdf outputname -png

Biçimini kullanarak PDF çıktısı verir her sayfa outputname-01.pngile, 01sayfanın endeks olma.

PDF'nin tek bir sayfasını dönüştürme

pdftoppm input.pdf outputname -png -f {page} -singlefile

Değiştir {page}sayfa numarasına. 1'de dizine eklenir, bu yüzden -f 1ilk sayfa olur.

Dönüştürülen görüntünün çözünürlüğünü belirtme

Bu komut için varsayılan çözünürlük 150 DPI'dır. Artırmak, hem daha büyük bir dosya boyutuna hem de daha fazla ayrıntıya neden olur.

, Dönüştürülmüş PDF çözünürlüğünü artırmak seçenekleri eklemek için -rx {resolution}ve -ry {resolution}. Örneğin:

pdftoppm input.pdf outputname -png -rx 300 -ry 300

24
Çok teşekkür ederim. Imaemagick veya graphicsmagick ile karşılaştırıldığında çok daha kaliteli!
dAnjou

7
pdftoppm dönüştürmek çok daha hızlıdır
zuo

4
Bu gerçekten hayal etmekten çok daha iyi. Imagemagick benim durumumda renkleri beklenmedik bir şekilde değiştirdi!
NoBackingDown 17:15

13
bu iyidir!, ancak -r 300aynı değere ayarlamak istediğinizde x ve y çözünürlüklerini bağımsız olarak belirlemek yerine yazmak biraz daha kolaydır .
mlc

2
Pdftoppm ile imagemagick'e göre çok daha başarılı oldum.
Michael Hays

22

IIRC GIMP, PDF'leri kullanma yeteneğine sahiptir, yani bunları görüntülere dönüştürür. Bu yüzden görüntüleri hemen düzenlemek istiyorsanız - GIMP arkadaşınızdır.


GIMP, her sayfayı bir katman olarak gerçekten açabilir. "Dışa Aktar" ı seçmek yalnızca geçerli katmanı kaydeder, ancak dışa aktardıktan sonra katmanı kolayca silebilir ve "Dışa Aktar" ı yeniden çalıştırabilirsiniz.
Dan Dascalescu

12

Şu anda kabul edilen cevap işi yapıyor ancak boyut olarak daha büyük ve kalite kaybına uğrayan bir çıktıyla sonuçlanıyor.

Burada verilen cevapta verilen yöntem , girdi ile karşılaştırılabilir boyutta olan ve kalite kaybına uğramayan bir çıktıya yol açar.

TLDR - Kullanım pdfimages:pdfimages -j input.pdf output

Bağlantılı cevaptan alıntı:

"Kalite kaybı" ile ne demek istediğinizi açık değil. Bu çok farklı anlamlara gelebilir. Göstermek için bazı örnekler gönderebilir misiniz? Belki de aynı bölümü düşük kaliteli ve kaliteli sürümlerden kesip (daha fazla kalite kaybını önlemek için PNG olarak).

Belki -densitydaha yüksek bir dpi ile dönüşüm yapmak için kullanmanız gerekir :

convert -density 300 file.pdf page_%04d.jpg

(Hazırlayabilirsiniz -units PixelsPerInchveya -units PixelsPerCentimetergerekirse. Kopyam varsayılan olarak ppi'dir.)

Güncelleme: Belirttiginiz gibi gscan2pdf(kullanma şekliniz ) pdfimages( poppler'den ) için sadece bir sarmalayıcıdır . Giriş olarak bir PDF verildiğinde pdfimages aynı şeyi convertyapmaz.

convert PDF'yi alır, bir çözünürlükte işler ve elde edilen bitmap'i kaynak görüntü olarak kullanır.

pdfimagesgömülü bitmap görüntüler için PDF'yi arar ve her birini bir dosyaya aktarır. Basitçe, PDF'deki herhangi bir metni veya vektör çizim komutunu yoksayar.

Sonuç olarak, eğer sahip olduğunuz bir seri bitmaplerin etrafına sarılmış bir PDF ise, pdfimagesbunları çıkarmak daha iyi bir iş çıkarır, çünkü ham verileri orijinal boyutunda alır. Muhtemelen bir PDF ham JPEG verisi içerebildiği için bu -jseçeneği de kullanmak istersiniz pdfimages. Varsayılan olarak, pdfimagesher şeyi PNM formatına dönüştürür ve JPEG> PPM> JPEG'e dönüştürmek kayıplı bir işlemdir.

O zaman dene

pdfimages -j file.pdf page

Sen ya da o izlemeniz gerekir olmayabilir convertiçin .jpg(PDF kullanıyordum biçimlendirmek bitmap şeye bağlı) adım.

Bu komutu, kendimi bir JPEG görüntü dizisinden yaptığım bir PDF'de denedim. Çıkarılan JPEG'ler, kaynak görüntülerle aynı bayt bayttı. Bundan daha yüksek bir kalite elde edemezsiniz.


8

Eğer pdfs'leriniz tarandıysa, görüntüler zaten pdf'in bir parçası olarak kaydedilmiştir. basitçe onları çıkartmanız gerekir pdfimages:

pdfimages my-file.pdf prefix 

2
Bu, taranmış pdfs'ler için mükemmel bir çözümdür, bununla birlikte, tek bir komutla orijinal jpgs'leri ayıklayabilirsiniz ve daha fazla baskı olmadan.
Jose Gómez,

3

Gm convert'den tek bir sayfa almak için, PDF adına [N] (N, 0'dan başlayan sayfa numarası ile) ekleyin, yani gm convert foo.pdf[11] out.png12. sayfayı PDF'den almak için.

İçin pdftoppmkullanımı -f N -singlefile, N yani 1 den başlayarak sayfa numarası, burada pdftoppm -f 12 -singlefile foo.pdf outaynı sonucu. Her zaman çıktı dosya adına ".png" ekliyor gibi görünüyor ve bunu durdurmanın bir yolu yok.


2

Dönüştürebilir ve -densityseçeneğini kullanarak daha yüksek bir yoğunluk belirleyebilirsiniz .

Örneğin. convert -d 300 foo.pdf bar.png


Yoğunluk nedir ve ne yapabileceği hakkında daha fazla açıklayabilir misiniz?
rʒɑdʒɑ

1
@AgentCool Yatay ve dikey görüntü yoğunluğunu (ppi cinsinden) belirtir.
Arjun

2

Yalnızca PNG bir PDF belirli bir sayfasını dönüştürmek istiyorsanız, aşağıdakileri yapabilirsiniz boru pdftkiçin convert( yukarıda anlatılan ) böyle:

pdftk document.pdf cat 12 output - | convert - document-page-12.png

1

Master PDF Editor (sürüm 2.2) bu seçeneğe sahiptir. PDF dosyasını açın ve ardından Dosya> Dışa Aktar> Görüntüler'e gidin. Çıktı için farklı seçenekler tanımlayabileceğiniz bir iletişim kutusu sunar. Son derece yararlı. Umarım bu bilgi yardımcı olur.


Bu ücretsiz mi yoksa ücretli mi? Benim sürümümde, seçenek gri mi? Bu ödemem gereken anlamına mı geliyor? Ücretli bir sürümü var mı?
Joshua Robison

0

PDF Mod ayrıca PDF dosyalarının tüm sayfalarının veya tek tek sayfalarının dışa aktarılmasını sağlar.

  • PDF dosyasını PDF Mod'da aç
  • Sayfa seç -
  • Düzen> Görüntüleri dışa aktar
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.