2012-04-06 7 views
1

Ich bin über eine Suche kyrillische (sowie alle anderen Nicht-ASCII) Zeichen in PDF mit PDDScanner gestolpert. Der Code, den ich benutze, ist ähnlich wie der Code von Randon ideas blog. Das Problem ist, dass für cyrilic PDFs die Ausgabe des Scanners ein kompletter Müll ist, der zu nichts sinnvollem decodiert werden kann. Englische Buchstaben in kyrillischen PDFs werden einfach perfekt gesucht. Das Problem ist also, dass es, wenn es um kyrillisch geht, codiert ist und wir nicht verstehen können, wie man es richtig dekodiert.Wie kann man mit QuartzPDF nach ASCII-Zeichen (kyrillisch) suchen?

Was vermissen wir hier?

Vielen Dank im Voraus für jeden, der über das Thema kein Licht werfen kann.

+0

Können Sie Code schreiben, und auch der Link zu dem " Randon Ideen Blog "? Aus dem Stegreif klingt das wie ein Zeichencodeproblem, aber PDF selbst ist dornig. –

+0

http://blog.random-ideas.net/?p=184 der Code ist einfach Cut-n-Paste – Adviser2010

Antwort

0

Sie müssen möglicherweise tiefer in die Apple spec and headers on this - NSLog Zeilen (und posten sie hier) für was der Scanner für die normale PDF und die kyrillischen findet. Es gibt viele Möglichkeiten (vielleicht eine andere Kodierung, d. H. Sie müssen die Zeichenfolge, die Sie haben, in eine andere Kodierung übersetzen, indem Sie die Kodierung verwenden). Ich bin mir sicher, dass es eine Möglichkeit gibt, alle Operatoren in der Tabelle aufzulisten, um zu sehen, ob es zusätzliche in Ihrem kyrillischen PDF gibt. Auch, this might help als ein sehr ähnliches Problem, das Sie versuchen zu lösen - es zeigt auf eine library that is more tuned to scanning auch.

+0

Ich versuchte PDFKitten es nicht mit kyrillischen wie gut funktioniert .. – Adviser2010

+0

ich NSLog hinzugefügt und bekam die folgende (ein Auszug) ~~~ ˛˚˚-~˝-˙˝www.mediayug.ru~~ ˘ ˙ ˛˝˛: ˘ ˘! ˘ \t ˘, ˘ ˘ ˘˘ \t iPad ~ ˚˛˝˙˘˙ ˚ ˘ ˝ ˙˝ ˚˛˝˘ Android 2012-04-09 14: 24: 32,238 PublishLike [8939: 16d03] Ich ¾ à ¶  ¾ À ¶ Å Æ Ä ¾ ½ ¸ Ä º Ç È ¸ ¶ ¾ Å Æ Ä º ¶ ¼ Ž € à ¶ Æ Z u b ¾ ¿Ç À Ä Â Æ Ñ Ã À »Ç Ä Ç È ¶ ¸ ao »È ¸ Ç Æ» º à »Â ¸ È» i »Ã ¾» Å Ä Á Ç »º à ¾ Ë – Adviser2010

+0

Hinweis, dass Englisch Zeichen bot codiert. aber der Rest des Textes sieht kryptisch aus. – Adviser2010

1

Haben Sie versucht, diese Zeichenfolge durch eine andere Codierung drückt? Als ich bei NSString.h anschaue, sehe ich etwas verdächtig markiert „kyrillisch“, die auch „Adobe“ auf der gleichen Linie hat :) (dh versuchen NSWindowsCP1251StringEncoding)

enum { 
    NSASCIIStringEncoding = 1,  /* 0..127 only */ 
    NSNEXTSTEPStringEncoding = 2, 
    NSJapaneseEUCStringEncoding = 3, 
    NSUTF8StringEncoding = 4, 
    NSISOLatin1StringEncoding = 5, 
    NSSymbolStringEncoding = 6, 
    NSNonLossyASCIIStringEncoding = 7, 
    NSShiftJISStringEncoding = 8,   /* kCFStringEncodingDOSJapanese */ 
    NSISOLatin2StringEncoding = 9, 
    NSUnicodeStringEncoding = 10, 
    NSWindowsCP1251StringEncoding = 11, /* Cyrillic; same as AdobeStandardCyrillic */ 
    NSWindowsCP1252StringEncoding = 12, /* WinLatin1 */ 
    NSWindowsCP1253StringEncoding = 13, /* Greek */ 
    NSWindowsCP1254StringEncoding = 14, /* Turkish */ 
    NSWindowsCP1250StringEncoding = 15, /* WinLatin2 */ 
    NSISO2022JPStringEncoding = 21,  /* ISO 2022 Japanese encoding for e-mail */ 
    NSMacOSRomanStringEncoding = 30, 

    NSUTF16StringEncoding = NSUnicodeStringEncoding,  /* An alias for NSUnicodeStringEncoding */ 

    NSUTF16BigEndianStringEncoding = 0x90000100,   /* NSUTF16StringEncoding encoding with explicit endianness specified */ 
    NSUTF16LittleEndianStringEncoding = 0x94000100,  /* NSUTF16StringEncoding encoding with explicit endianness specified */ 

    NSUTF32StringEncoding = 0x8c000100,     
    NSUTF32BigEndianStringEncoding = 0x98000100,   /* NSUTF32StringEncoding encoding with explicit endianness specified */ 
    NSUTF32LittleEndianStringEncoding = 0x9c000100  /* NSUTF32StringEncoding encoding with explicit endianness specified */ 
}; 
+0

leider hilft es nicht. Ich habe versucht, NSSTring mit einer Codierung oben zu konvertieren, aber es funktioniert nicht ... – Adviser2010

+0

NSData * data = [currentData dataUsingEncoding: NSUTF8StringEncoding]; NSString * ddd = [[NSString-Zuweisung] initWithData: Datencodierung: NSWindowsCP1251StringEncoding]; Das Problem ist, dass, wenn ich versuche, den gesamten von einem Scanner zurückgegebenen Stream zu decodieren, Null zurückgibt. andere Kodierungen gaben mir wieder einen kompletten Müll. – Adviser2010

Verwandte Themen