Bir PDF dosyasından belirli bir sayfa kapmak için convert kullanın?


21

Bunu daha önce de yaptığımı biliyorum, bu yüzden mümkün olduğundan eminim, nasıl yapılacağını unuttum. Convert'in bir PDF'nin belirli bir sayfasını tutmasını söylemenin bir yolu var ve o sayfanın formatını PDF olarak tutmak istiyorum.

Yanıtlar:


24

ImageMagick, çoğu PDF'nin olmadığı bitmap görüntüler için bir araçtır. Bunu kullanmak gelirse, bu rasterleştirmek istenilen bir durum değildir verileri,.

Pdftk , bir PDF dosyasından bir veya daha fazla sayfa çıkarabilir.

pdftk A=input.pdf cat A42 A43 output pages_42_43.pdf

PDFLaTeX ile LaTeX kurulumunuz varsa, pdfpages kullanabilirsiniz . Pdfpages, pdfjam için bir kabuk sarmalayıcı var .

pdfjam -o pages_42_43.pdf input.pdf 42,43

Başka bir olasılık (burada fazladan yazılan , ancak bir sayfadan daha karmaşık olan gereksinimler için kullanışlıdır) PyPdf kitaplığı ile Python'dur .

#!/usr/bin/env python
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for i in [42, 43]:
    output.addPage(input.getPage(i))
output.write(sys.stdout)

Ben de tavsiye etmek üzereydim pdftk. Kullanmak isteyeceksiniz.
Sebastian,

pdfjambir cazibe gibi çalışır ve zaten LaTeX dağıtımımla kuruldu. Kullanımı çok kolaydır.
hdl

Çok teşekkürler. Çıkarılan sayfa tam pdf'den daha büyük olduğundan, pdftkyalnızca bir sayfayı çıkarmamış gibi görünüyor. Aksi takdirde sonuç iyiydi.
Eric Duminil

25

convert(1)Bir pdf içine "index" eklemek için alt simge gösterimini kullanabilirsiniz :

$ convert source.pdf[1] dest.pdf 

Endeks değeri, PDF ihracatçının sayfaları nasıl numaralandırdığına bağlıdır. Buradaki dosyalar üzerinde yapılan testlerde, sayılar sıfır temelli gibi görünüyor, bu nedenle yukarıdaki örnek size belgedeki ikinci sayfayı veriyor . Bunun yerine çevrimiçi olarak mektup indeksleri gösterdikleri örnekleri gördüm, çünkü görünüşe göre PDF oluşturucusu sayfaları bu şekilde bu belgede "numaralandırdı".

Ne yazık ki, bu çok iyi sonuçlar vermiyor çünkü ImageMagick her şeyin piksel tabanlı olduğunu varsayıyor ve bu nedenle tipik bir PDF'deki tipografi gibi vektör görüntülerini rasterleştiriyor.

İş için daha iyi bir araç , muhtemelen önceden yüklediğiniz Ghostscript :

$ gs -dNOPAUSE -dBATCH -dFirstPage=2 -dLastPage=2 -sDEVICE=pdfwrite \
    -sOutputFile=dest.pdf -f src.pdf

Bu, PDF verilerini değiştirmeden geçirir, çünkü Ghostscript, PDF'yi (PostScript türevi) ImageMagick'ten çok daha derin bir düzeyde anlar.


2
aslında imagemagick için doğru değil, -density parametresini 300-400 civarında bir şeye ayarlarsanız, png'deki pdf'den çıkarılan metin gayet iyi görünecektir.
bucomcom

2
Ekranda gayet iyi görünecek, elbette, ancak daha sonra yazdırmaya devam ederseniz, yoğunluğu daha da yükseğe ayarlamak istersiniz. Daha sonra, yazıcınızın RIP'sinin ImageMagick tarafından üretilen gri antialiasing pikselleriyle nasıl başa çıktığıyla ilgili sorun yaşarsınız. Böylece, yazıcınızın yerel çözünürlüğünde 1.200 dpi veya 1.440 dpi veya başka bir şey olabilecek 1 bit B & W'ye yazdırmayı seçebilir ve keskin bir çıktı elde etmek için bunu önceden bilmeniz gerekir. Hayır, ifademe katılıyorum: PDF verisini mümkün olduğu kadar vektör şeklinde tutmak için en iyisi.
Warren Young

@buggedcom bulduğum -density 300tatlı nokta. Daha büyük bir şey varsa ve büyük geçici dosyalar oluşturuyorsunuz - ki muhtemelen yine de küçük resimlere göre yeniden boyutlandırılacaksınız
Mike Causer

2
Ayrıca, bunun gibi bir dizi sayfa da (örneğin, bir gif yapmak için) source.pdf[3-6]
seçebilirsiniz
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.