2010-08-10 5 views
7

У нас есть куча отсканированных страниц (около 600), для которых каждый просмотрщик PDF отображает изображение с нулевым запасом на правом краю, но на расстоянии около 2 дюймов слева. (Предположительно, при сканировании использовалась неправильная настройка ...)Как сместить изображения в PDF-файлах больше влево или вправо?

Мы хотим напечатать эти страницы, предпочтительно в виде буклета. Есть ли способ перенести все образы страниц в центр и иметь в этом формате PDF эти страницы более приятным образом? Может ли Ghostscript сделать это? Можно ли сделать это с помощью какого-либо другого метода, например, программно с помощью некоторой библиотеки обработки PDF?

+0

Это не вопрос программирования, и вам будет полезно перейти на SuperUser. – Robino

ответ

8

Если вы не хотите, чтобы написать свой собственный программный код (как Николаус), но вместо этого используйте командную строку Ghostscript, вам нужно знать 3 вещи:

  1. У PostScript есть оператор setpagedevice, который принимает параметр PageOffset;
  2. Ghostscript обработает фрагменты кода PostScript, если вы передадите их -c ... на командной строке;
  3. Ghostscript может оценивать и применять (некоторые) PostScript код даже для прямого PDF => PDF конверсий.

Теперь попробуйте эту командную строку, чтобы перенести все изображения страниц на 1 дюйм (== 72pt) слева:

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 

(-dPDFSETTINGS=/prepress я вставил, чтобы не потерять ни качества изображения сканирование ...)

+0

Красивая! Это работает как шарм! – 2010-08-14 22:20:14

+0

Теперь у меня новая проблема. Речь идет о извлечении шрифтов. Я задам отдельный вопрос об этом. – 2010-08-15 15:05:58

+0

@ Коммунизм: ** НЕТ ** - Ghostscript делает ** не ** требует обратную косую черту вместо прямых косых черт. Вы можете держать их такими, какие они есть, и они будут работать одинаково. (Не мешает менять обратную косую черту, хотя ... однако вам может потребоваться изменить ** двойную ** обратную косую черту для некоторых версий даже ...) И ** НЕТ **, вам не нужно менять дефисы ('-') для косой черты ('/') - это может даже повредить! Извините! –

1

вы можете использовать IText для перемещения, масштаб или обрезать PDF-страницы

вам нужно определить PdfReader для вашего исходного файла, и документ для вашего целевого файла то перебирать страницы, если читатель, создать новую страницу в документе и добавьте sourcePage в качестве шаблона для новой страницы (смещение, масштабирование и т.д., где вы хотите)

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(); 

 Смежные вопросы

  • Нет связанных вопросов^_^