Как я могу сместить изображения страницы в файлах PDF больше налево или направо?

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

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

10
задан 10 August 2010 в 09:51
поделиться

2 ответа

Если вы не хотите писать свой собственный программный код (как предлагал Николаус), а вместо этого используете командную строку 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 я вставил, чтобы не потерять изображение качество сканирования ...)

9
ответ дан 4 December 2019 в 01:29
поделиться

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

вам нужно определить PdfReader для исходного файла и документ для целевого файла. затем вы перебираете страницы, если Reader создает новую страницу в документе и добавьте 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();
1
ответ дан 4 December 2019 в 01:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: