Обрезка страниц в файле PDF

Это возвращает длинную строку палиндрома из заданной строки

-(BOOL)isPalindromString:(NSString *)strInput
{
    if(strInput.length<=1){
        return NO;
    }
    int halfLenth = (int)strInput.length/2;

    BOOL isPalindrom = YES;
    for(NSInteger i=0; i<halfLenth; i++){

        char a = [strInput characterAtIndex:i];
        char b = [strInput characterAtIndex:(strInput.length-1)-i];

        if(a != b){
            isPalindrom = NO;
            break;
        }
    }
    NSLog(@"-%@- IS Plaindrom %@",strInput,(isPalindrom ? @"YES" : @"NO"));
    return isPalindrom;
}


-(NSString *)longestPalindrom:(NSString *)strInput
{
    if(strInput.length<=1){
        return @"";
    }

    NSString *strMaxPalindrom = @"";

    for(int i = 0; i<strInput.length ; i++){

        for(int j = i; j<strInput.length ; j++){

            NSString *strSub = [strInput substringWithRange:NSMakeRange(i, strInput.length-j)];

            if([self isPalindromString:strSub]){

                if(strSub.length>strMaxPalindrom.length){

                    strMaxPalindrom = strSub;
                }
            }
        }
    }
    NSLog(@"-Max - %@",strMaxPalindrom);
    return strMaxPalindrom;
}

-(void)test
{
    [self longestPalindrom:@"abcccbadeed"];
}

== OUTPUT ===

Вход: abcccde Выход: ccc

Вход: abcccbd Выход: bcccb

Вход: abedccde Выход: edccde

Вход: abcccdeed Выход: документ

Вход: abcccbadeed Выход: abcccba

13
задан stovfl 28 September 2018 в 18:07
поделиться

4 ответа

pypdf делает то, что я ожидаю в этой области. Используя следующий сценарий:

#!/usr/bin/python
#

from pyPdf import PdfFileWriter, PdfFileReader

with open("in.pdf", "rb") as in_f:
    input1 = PdfFileReader(in_f)
    output = PdfFileWriter()

    numPages = input1.getNumPages()
    print "document has %s pages." % numPages

    for i in range(numPages):
        page = input1.getPage(i)
        print page.mediaBox.getUpperRight_x(), page.mediaBox.getUpperRight_y()
        page.trimBox.lowerLeft = (25, 25)
        page.trimBox.upperRight = (225, 225)
        page.cropBox.lowerLeft = (50, 50)
        page.cropBox.upperRight = (200, 200)
        output.addPage(page)

    with open("out.pdf", "wb") as out_f:
        output.write(out_f)

получающийся документ имеет поле для обрезки, которое является 200x200, указывает и запускается в 25,25 точках в поле медиа. Поле обрезки является 25 точками в поле для обрезки.

Вот то, как мой демонстрационный документ смотрит в профессионале акробата после обработки с вышеупомянутым кодом: crop pages screenshot

Этот документ появится пробел, когда загружено в Acrobat Reader.

28
ответ дан Jesper 28 September 2018 в 18:07
поделиться
  • 1
    На самом деле Boost.Atomic основан на стандартной атомарной библиотеке. – Mankarse 4 March 2012 в 03:45

Можно преобразовать PDF в Постскриптум (pstopdf или ps2pdf) и, чем обработка текста использования на файле Постскриптума. После этого можно преобразовать вывод назад в PDF.

Это работает приятно, если PDFs, которые Вы хотите обработать, все сгенерированы тем же приложением и несколько подобны. Если они происходят из других источников, это обычно трудно для обработки файлов Постскриптума - структура варьируется к очень. Но даже, чем Вы мог бы быть в состоянии зафиксировать размеры страницы и т.п. с несколькими регулярными выражениями.

0
ответ дан max 28 September 2018 в 18:07
поделиться

API JavaScript Acrobat имеет setPageBoxes метод, но Adobe не обеспечивает примеров кода Python. Только C++, C# и VB.

0
ответ дан 28 September 2018 в 18:07
поделиться
  • 1
    Спасибо за ссылку. Я считал его. Похож нет никакого пути в Знатоке официально. Я должен сделать вид обходного решения. – Smartmarkey 27 October 2011 в 05:28

Вы, вероятно, ищете бесплатное решение, но если у Вас есть деньги для расходов, , PDFlib является невероятной библиотекой. Это никогда не разочаровывало меня.

2
ответ дан Ned Batchelder 28 September 2018 в 18:07
поделиться
  • 1
    Я имею в виду наследованную зависимость из родительского проекта, не переходную зависимость от прямой зависимости как Ваш пример. Так или иначе, большое спасибо.:) – Smartmarkey 26 October 2011 в 05:37
Другие вопросы по тегам:

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