iOS中的PDF阅读器和编写器中的文本格式

时间:2012-08-14 15:51:01

标签: iphone ios ipad ios4 core-graphics

在我的应用程序中,我必须显示PDF阅读器(来自服务器的PDF)并将所有内容复制到另一个PDF。我正在使用Reader来显示PDF。

但它无法格式化PDF中的文本。 粗体文字以粗体显示在某些不同的窄字体中。你能给我一个解决方案吗?

同样,在写作时我正在使用Saving a PDF document to disk using Quartz。但在这里我遇到了同样的问题。新PDF显示的不是源PDF中使用的字体。

我也试过下面的代码。我仍然得到相同的O / P.请帮我解决一下这个。我没有用另一种文本字体测试它,如斜体/下划线。它也适用于这些字体。

- (void) generatePdfWithFilePath: (NSString *)thefilePath {
  UIGraphicsBeginPDFContextToFile(thefilePath, CGRectZero, NULL);
  BOOL done = NO;

  do {
    //Start a new page.
    UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, pageSize.width, pageSize.height), nil);
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"MyPdf" ofType:@"pdf"];
    CFURLRef url = (CFURLRef)[NSURL fileURLWithPath:filePath];
    CGPDFDocumentRef pdf = CGPDFDocumentCreateWithURL(url);
    CGPDFPageRef page = CGPDFDocumentGetPage(pdf, 1);
    CGRect paperSize = CGPDFPageGetBoxRect(CGPDFDocumentGetPage (pdf, 1), kCGPDFMediaBox);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextTranslateCTM(context, 0, paperSize.size.height);
    CGContextScaleCTM(context, 1.0, -1.0); 
    CGContextDrawPDFPage(context, page);
    done = YES;
  } while (!done);

  UIGraphicsEndPDFContext();
}

如果源PDF是从iOS设备以外的源生成的,则会发生这种情况。

1 个答案:

答案 0 :(得分:0)

有几点想法:

  1. 您要显示的字体不在iOS devices中,也不在PDF中嵌入。因此,它替代了它认为相似的字体。
  2. 您不必使用Reader来显示PDF,您可以使用Web视图,UIDocumentInteraction控制器或CGPDFController。使用这些内置显示器之一,您可能会更幸运,而不是使用Reader。