2012-03-20 3 views
0

У меня есть файл postscript из 100 строк. Я пытаюсь объединить 2 pdfs в один с помощью ghostscript. То, что я хочу сделать, это, слияние как PDF в один и чем применить мой постскриптума код следующим образом:Как выполнить файл postscript на определенный номер страницы?

1) первые 50 строк файла приписки должны применяться только на странице 1 из сгенерированного PDF

2) оставшиеся 50 строк, которые должны быть применены на второй странице сгенерированного pdf.

Я использовал следующий код, чтобы сделать это:

gs -q -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=output.pdf test.ps pdf_1.pdf pdf_2.pdf; 

Я попытался showpage вариантом приписки, но вставить пустую страницу в сгенерированном выходе PDF, и это не мое требование.

Любой знает, как я могу это сделать?

ответ

0

Вы можете разбить код PS в несколько итераций , Просто создайте один pdf-файл с одной частью PS-кода, а затем сгенерируйте еще один PDF-файл с оставшейся частью PS. После этого вы можете объединить оба PDF с помощью скрипта-призрака и получить выход желания.

Я знаю, что это не мудрое решение, но для того времени вы можете двигаться вперед.

Благодаря

+0

Не очень хорошая идея, но это помогает мне на время. – Smit

3

showpage не является опцией Ghostscript, ее оператором PostScript.

Поскольку ваши входные файлы в формате PDF, это нетривиальная задача. Интерпретатор PDF выполнит системное определение showpage для каждой страницы входного файла PDF, переопределяя все, что вы помещаете в PostScript.

Не пытаясь понять это, я считаю, что вам нужно создать процедуру EndPage, которая принимает разные действия в зависимости от количества страниц (это метод программирования PostScript).

Например:

/DoPage1 { 
    %% Your code goes in here 
} def 
/DoPage2 { 
    %% Your code goes in here 
} 
<< 
/EndPage { 
    2 lt{ 
     1 eq { 
      DoPage1 
     }{ 
      DoPage2 
     } ifelse 
    }{ 
     pop 
    } ifelse 
} 
>> setpagedevice 

Вы должны запустить этот код перед тем на 2 PDF файлы, например:

gs .... setup.ps file1.pdf file2.pdf

+0

Хорошо, похоже, что это работает для данного примера. Теперь скажем, что у меня есть динамически сгенерированные PDF-файлы и разные номера страниц. В таком случае, какой должен быть код для постскриптума? Я очень новичок в постскриптуме и очень мало понимаю об этом. – Smit

+2

Не знаю. Как вы узнаете, какой набор PostScript для присоединения к какой странице, если у вас есть переменное количество страниц? PostScript - это язык программирования, поэтому, когда вы знаете, что хотите, вы можете запрограммировать его. – KenS

2

Вы можете предоставить все имена п.с. файлов в одной команде, просто рядом с каждым именем выходного файла PDF. Это создаст требуемые PDF-файлы, у которых есть вывод PS-кода, и затем вы можете объединить их в соответствии с требованием, используя любую библиотеку PDF.

+0

Это работает для меня .. но как насчет блоков pdf? – Smit