Bir pdf dosyasını kullanarak jpg dosyaları demet dönüştürdüğümde
convert -quality 100 file.pdf page_%04d.jpg
Kayda değer kalite kaybım var.
Ancak aşağıdakileri yaparsam, hiçbir (göze çarpan) kalite kaybı olmaz:
Gscan2pdf uygulamasını başlatın, file-> import öğesini seçin (ve file.pdf dosyasını seçin). Sonra gscan2pdf geçici dizinine gidin. Birçok pnm dosyası vardır (pdf dosyasının her sayfası için bir tane). Şimdi yapıyorum
for file in *.pnm; do convert $file $file.jpg done
Ortaya çıkan jpg dosyaları (kabaca) orijinal pdf ile aynı kalitede (istediğim budur).
Şimdi sorum, pdf dosyasını dikkat çekici kalite kaybı olmadan bir sürü jpg dosyasına dönüştürmek için basit bir komut satırı yolu varsa? (Yukarıdaki çözüm çok karmaşık ve zaman alıcıdır).
"Kalite kaybı" ile ne demek istediğiniz belli değil. Bu birçok farklı şey anlamına gelebilir. Örneklemek için bazı örnekler gönderebilir misiniz? Belki de aynı bölümü düşük kaliteli ve kaliteli sürümlerden ayırın (daha fazla kalite kaybını önlemek için PNG olarak).
Dönüşümleri daha yüksek bir dpi'de yapmak için
-density Kullanmanız gerekebilir:
convert -density 300 file.pdf page_%04d.jpg
(Gerekirse
-units PixelsPerInch Veya
-units PixelsPerCentimeter Önüne ekleyebilirsiniz. Kopyam varsayılan olarak ppi'dir.)
Güncelleme: Belirttiğiniz gibi,
gscan2pdf (Kullanma şekliniz) yalnızca
pdfimages ( poppler ).
pdfimages, girdi olarak PDF verildiğinde
convert ile aynı şeyi yapmaz.
convert PDF'yi alır, belirli bir çözünürlükte oluşturur ve elde edilen bitmap'i kaynak görüntü olarak kullanır.
pdfimages, katıştırılmış bitmap görüntüler için PDF içine bakar ve her birini bir dosyaya aktarır. PDF'deki metin veya vektör çizim komutlarını yok sayar.
Sonuç olarak, sahip olduğunuz bir PDF ise bir bitmap serisinin etrafındaki bir sarıcıysa,
pdfimages bunları çıkarmada çok daha iyi bir iş çıkarır, çünkü ham verileri alır orijinal boyutunda. Muhtemelen
-j Seçeneğini
pdfimages olarak kullanmak istersiniz, çünkü PDF ham JPEG verileri içerebilir. Varsayılan olarak,
pdfimages her şeyi PNM formatına dönüştürür ve JPEG> PPM> JPEG dönüştürmek kayıplı bir işlemdir.
O zaman dene
pdfimages -j file.pdf page
Bunu
convert -
.jpg Adımıyla (PDF hangi bitmap biçimini kullandığına bağlı olarak) izlemeniz gerekebilir veya gerekmeyebilir.
Bu komutu kendimi bir JPEG resim dizisinden yapmış olduğum bir PDF üzerinde denedim. Çıkarılan JPEG'ler, kaynak görüntülerle aynı bayt-bayt idi. Bundan daha yüksek kalite elde edemezsiniz.
Öğrencinin cevabının dediği gibi
pdfimages iyi bir seçenektir. Deneyimlerime göre, doğru dpi'yi belirtmenizden bağımsız olarak
gs ve
convert düşük kaliteye aktarılır.
Ancak pdf sayfa başına birden fazla katmana sahipse
pdfimages çalışmaz ve katmanları ayrı bir görüntü olarak çıkarırsa, bu durumda en iyi şekilde görüldüğü gibi sayfayı dışa aktarmak için
inskcape kullanmaktır.
Kullandığım komutlar şunlardır:
pdftk combined_to_do.pdf burst output pg_%04d.pdf ls ./pg*.pdf | xargs -L1 -I {} inkscape {} -z --export-dpi=300 --export-area-drawing --export-png={}.png
İlk komut tüm sayfaları böler ikinci komut sayfa sayfa png dönüştürür. Onları png olarak saklayabilir veya sadece jpeg'e dönüştürebilirsiniz
ls ./p*.png | xargs -L1 -I {} convert {} -quality 100 -density 300 {}.jpg
pdfimages,
gs ve ImageMagick'in
convert ile karşılaştırıldığında
inkscape 'nin en iyi kaliteyi ihraç ettiğini düşünüyorum.
@cjm'den gelen yanıt doğrudur, ancak GUI'den hoşlanıyorsanız ve tüm pdf sayfalarını oluşturmak istemiyorsanız, sadece bir görüntü elde etmek için gimp kullanın.
Gimp ile bir pdf açın ve tüm sayfaları işlenmiş bir içe aktarma penceresi alacaksınız. İstediğiniz sayfaları seçin ve çözünürlüğü 600 piksel/inç olarak ayarlayın (Birçok durumda 300'den fazla netlik buldum). "Dosya/dışa aktar" ile istediğiniz biçime kaydedin
Her neyse, komut satırından istenen sayfaları seçmek için bir bayrak olmalıdır.
Gscan2pdf kaynak koduna baktığımda pdfimages kullandığını fark ettim. Dolayısıyla
pdfimages file.pdf page,
page-001.ppm, page-002.ppm Vb. İle sonuçlanacaktır.
Sorunuzda net olmayan şey, pdf'nizdeki metin ve vektör grafikleri hakkında konuşup konuşmamanız veya pdf'inizin gömülü resimler içerip içermediği.
Gscan2pdf ne hakkında okuduktan sonra, tahminim pdf dosyaları (sadece) gömülü grafikler içeriyor olmasıdır.
convert pdf'nizi içeriklerin ne olduğuna bakmaksızın "yazdırır". @Cjm'nin önerdiği gibi, baskı yoğunluğunu değiştirmek isteyebilirsiniz. Vektör grafikleri için kaliteyi artırmanın tek yolu budur.
Bunun yerine, yapmak istediğiniz şey gömülü görüntüleri çıkarmaktır (gscan2pdf gibi), yoğunluğu tahmin etmek genellikle kalite kaybına veya gerekenden daha yüksek kaliteye (ve disk alanı israfına) yol açar. Bu sorunun cevabı, pdf yazdırmak yerine görüntüyü çıkarmaktır. Bu makaleye bakın temelde
pdfimages kullanımını kalite kaybı olmadan çıkarmak için kullanılır.