0

我想NSLog具有压缩流对象的PDF的内容,其中包括流中间的零(' 0 ')。

不幸的是,第一个流对象中第一次出现“ 0 ”会终止控制台上的输出......

在SO或云中根本找不到任何东西。
尝试了4种不同的方式...

    NSString *pdfFilePath = [[NSBundle mainBundle] pathForResource: @"myPDF" ofType: @"pdf"];
    NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:pdfFilePath];
    NSData *myData = [NSData dataWithContentsOfURL:fileURL];

    ________________________________________________________________________
    //1
    NSString *string = [[NSString alloc] initWithData:myData
                                             encoding:NSASCIIStringEncoding];
    NSLog(@"%@", string);
    ________________________________________________________________________
    //2   
    NSString *myDataAsString = [[NSString alloc] initWithData:myData
                                                     encoding:NSASCIIStringEncoding];
    NSLog(@"%@", myDataAsString);
    ________________________________________________________________________
    //3
    NSString *myPDFasString = [NSString stringWithContentsOfURL:fileURL
                                                       encoding:NSASCIIStringEncoding error:NULL];
    NSLog(@"%@", myPDFasString);
    ________________________________________________________________________ 
    //4       
    NSString *stringFromFileAtURL = [[NSString alloc] initWithContentsOfURL:fileURL
                                                                   encoding:NSASCIIStringEncoding error:NULL];
    NSLog(@"%@", stringFromFileAtURL);        

所有 4 个在控制台上的 OUTPUT:(当然——它在后备存储中始终是一个以 null 结尾的字符串)

    %PDF-1.1  
    %
    1 0 obj <<  
      /Type /Catalog  
      /Count 1  
      /Pages 6 0 R >>  
    endobj

    2 0 obj <<  
    %%/Type /Stream  
      /Filter /FlateDecode  
      /Length 12 >>  

    stream
    x+TT

这里流结束是因为'x + TT'之后的'0'(这是流对象的开始)......

任何人?

4

1 回答 1

0

NSLog当格式化 C 样式字符串时,将停止在 null 处,其他任何输出 C 字符串的内容也是如此。

有多种方法可以用简单的代码解决问题,这仅用于调试,因此无需花哨。这里有一些提示:

  • NSData可以给你一个指向字节的指针,bytes,以及有多少,length
  • 标准 C 库函数isprint会告诉您字符是否可打印。
  • 标准 C 库函数putchar将向控制台输出单个字符。
  • printf如果您想制作一些您可能会发现有用的非打印文件的表示。

如果您遇到问题,请提出另一个问题,包括您编写的代码。

高温高压

于 2015-07-21T19:42:26.573 回答