Это возвращает длинную строку палиндрома из заданной строки
-(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
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 точками в поле для обрезки.
Вот то, как мой демонстрационный документ смотрит в профессионале акробата после обработки с вышеупомянутым кодом:
Этот документ появится пробел, когда загружено в Acrobat Reader.
Можно преобразовать PDF в Постскриптум (pstopdf или ps2pdf) и, чем обработка текста использования на файле Постскриптума. После этого можно преобразовать вывод назад в PDF.
Это работает приятно, если PDFs, которые Вы хотите обработать, все сгенерированы тем же приложением и несколько подобны. Если они происходят из других источников, это обычно трудно для обработки файлов Постскриптума - структура варьируется к очень. Но даже, чем Вы мог бы быть в состоянии зафиксировать размеры страницы и т.п. с несколькими регулярными выражениями.
API JavaScript Acrobat имеет setPageBoxes метод, но Adobe не обеспечивает примеров кода Python. Только C++, C# и VB.
Вы, вероятно, ищете бесплатное решение, но если у Вас есть деньги для расходов, , PDFlib является невероятной библиотекой. Это никогда не разочаровывало меня.
Boost.Atomic
основан на стандартной атомарной библиотеке. – Mankarse 4 March 2012 в 03:45