2010-08-10 19 views
7

Her PDF görüntüleyicinin resmi sağ kenarda sıfır kenar boşluğuyla görüntülediği, ancak solda yaklaşık 2 inçlik kenar boşluğu bulunan bir dizi taranmış sayfa var (yaklaşık 600). (Muhtemelen tararken, yanlış ayar kullanılmıştı ...)Sayfa görüntülerini PDF dosyalarında nasıl daha fazla sola veya sağa kaydırırım?

Bu sayfaları tercihen bir kitapçık olarak yazdırmak istiyoruz. Tüm sayfa görüntülerini merkeze doğru kaydırmanın ve PDF'nin bu sayfaları da daha hoş bir şekilde görüntülemesinin bir yolu var mı? Ghostscript bunu yapabilir mi? Birisi, bazı PDF işleme kitaplığı yardımıyla programatik olarak başka bir yöntemle yapılabilir mi?

+0

Bu bir programlama sorusu değildir ve SuperUser uygulamasına taşınmaktan yararlanır. – Robino

cevap

8

kendi program kodu yazmak istemiyorsanız ((, ölçekleme vb istediğiniz yere kayması) önerilen), ancak bunun yerine Ghostscript komut satırı kullanın, 3 şeyi bilmeniz gerekir:

  1. PostScript PageOffset parametre alır setpagedevice operatörü sahiptir;
  2. Ghostscript, komut satırında -c ... ile iletirseniz Postscript kod snippet'lerini işleyecek;
  3. Ghostscript, PostScript kodunu doğrudan için bile PDF => PDF dönüşümlerini değerlendirebilir ve uygulayabilir. Şimdi

sola 1 inç (== 72pt) tarafından tüm sayfa görüntüleri kaydırmaya bu CommandLine deneyin:

gswin32c.exe^
    -sDEVICE=pdfwrite^
    -o c:/path/to/output/pdf-shifted-by-1-inch-to-left.pdf^
    -dPDFSETTINGS=/prepress^
    -c "<</PageOffset [-72 0]>> setpagedevice"^
    -f c:/path/to/input/pdf-original.pdf 

(ben sırayla koymak -dPDFSETTINGS=/prepress herhangi görüntü kalitesini gevşek değil taramalar ...)

+0

Güzel! Bu bir çekicilik gibi çalışır! –

+0

Şimdi yeni bir sorunum var. Bu yazı tipi çıkarma ile ilgilidir. Bununla ilgili ayrı bir soru soracağım. –

+0

@Topluluk: ** NO ** - Ghostscript ** eğik eğik çizgi yerine ters eğik çizgi gerektirmez. Onları olduğu gibi tutabilir ve aynı şekilde çalışır. (Ancak ters eğik çizgi değiştirmek için zarar vermez ... Ancak, hatta bazı sürümleri için çift ** ters eğik çizgi değiştirmeniz gerekebilir ...) Ve ** HAYIR, tire değiştirmek gerekmez ('-') eğik çizgi ('/') - bir kişi bile acıtabilir! Değişikliğinizi geri alacağım, üzgünüm! –

1

Taşımak iText kullanabilirsiniz, ölçek veya kırpma pdf sayfaları

Eğer kaynak dosyası için bir PdfReader tanımlamak gerekir ve sizin Hedef dosyası için Belge sonra Reader eğer sayfalarda sürekli tekrarlanması Belge yeni bir sayfa oluşturmak ve yeni sayfaya Şablon olarak sourcePage ekleyin Nikolaus olarak

PdfReader reader = new PdfReader(input); 
    int n = reader.getNumberOfPages(); 

    Rectangle psize = reader.getPageSize(1); 
    float width = psize.getHeight(); 
    float height = psize.getWidth(); 

    Document document = new Document(new Rectangle(height, width)); 
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(output)); 

    document.open(); 

    PdfContentByte cb = writer.getDirectContent(); 

    int i = 0; 
    while (i < n) { 
     i++; 
     document.newPage(); 
     PdfImportedPage page = writer.getImportedPage(reader, i); 
     cb.addTemplate(page, factor, 0, 0, factor, left, down); 
    } 

    document.close(); 
İlgili konular