iOS 中 PDF Reader 和 Writer 中的文本格式

Posted

技术标签:

【中文标题】iOS 中 PDF Reader 和 Writer 中的文本格式【英文标题】:Text Formatting in PDF Reader and Writer in iOS 【发布时间】:2012-08-14 15:51:01 【问题描述】:

在我的应用程序中,我必须显示一个 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】:

一些想法:

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

【讨论】:

以上是关于iOS 中 PDF Reader 和 Writer 中的文本格式的主要内容,如果未能解决你的问题,请参考以下文章

Java IO: Reader And Writer

golang中的io.Reader/Writer

golang io.Reader和io.Writer很有趣

IO Writer和Reader

java 使用Reader和Writer对文件内容的拷贝

Java IO 字符流 Writer 和 Reader