首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CGContextDrawPDFPage显示白色或乱码文本

CGContextDrawPDFPage显示白色或乱码文本
EN

Stack Overflow用户
提问于 2010-06-02 20:53:30
回答 2查看 1.8K关注 0票数 2

在更新我的iPad应用程序的过程中,我一直试图将页面从现有的PDF文档绘制到核心图形上下文中,然后将其另存为新的PDF,但无法正确显示文本。新创建的PDF中的图像看起来很棒,但文本很少正确显示:更多情况下,它显示为白色/不可见或乱码。当文本不可见时,我仍然能够选择它应该出现的位置,并将其正确复制/粘贴到文本编辑器中。这是与iPad上可用字体数量有限有关的问题吗?

我的代码如下:

代码语言:javascript
复制
CGPDFDocumentRef document = CGPDFDocumentCreateWithProvider(dataProvider);
CGPDFPageRef page = CGPDFDocumentGetPage(document, pageNumberToRetrieve);
CGRect pageRect = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);

UIGraphicsBeginPDFContextToFile(pathToFile, pageRect, nil);
CGContextRef context = UIGraphicsGetCurrentContext();

CGContextBeginPage(context, NULL);

// I don't think this line is necessary, but I have tried both with and without it.
CGContextSetTextDrawingMode (context, kCGTextFill);

CGContextDrawPDFPage(context, page);

CGContextEndPage(context);
UIGraphicsEndPDFContext();
CGDataProviderRelease(dataProvider);
CGPDFDocumentRelease(document);

如果任何人有任何建议,我将非常感谢。

耽误您时间,实在对不起。

抢夺

EN

回答 2

Stack Overflow用户

发布于 2010-07-01 18:41:52

在图像上下文中绘制不会造成问题(文本正确显示)。

我正在尝试做的是创建一个只包含原始PDF的几个页面的-new- PDF文件。由于某些原因,文本似乎无法正确绘制到新文件中。

信息在那里(我可以通过“猜测”选择文本在预览中应该在哪里),但它不呈现。我假设CGContextDrawPDFPage将字符串写入PDF文件,但不绘制它,因为它不知道该字体的字符“看起来是什么样子”?

我认为在PDF中嵌入字体的意义在于,即使系统中没有安装该字体(在本例中是iPad),程序也能够执行这些类型的操作。这是格式的限制还是Quartz框架的限制?

票数 2
EN

Stack Overflow用户

发布于 2010-07-01 16:13:06

是否要在屏幕上呈现?我不认为有必要使用UIGraphicsBeginPDFContextToFile?但是,要在屏幕上渲染,可以使用类似以下内容:

代码语言:javascript
复制
pageReference = CGPDFDocumentGetPage(pdfReference, page);

  CGContextRef context = UIGraphicsGetCurrentContext();
  @try {
    CGContextTranslateCTM(context, 0.0, self.bounds.size.height);
    CGContextScaleCTM(context, scale, -scale);

    CGContextSaveGState(context);
    @try {
      CGAffineTransform pdfTransform = CGPDFPageGetDrawingTransform(pageReference, kCGPDFCropBox, self.bounds, 0, true);
      CGContextConcatCTM(context, pdfTransform);
      CGContextDrawPDFPage(context, pageReference);
    }
    @finally {
      CGContextRestoreGState(context);
    }
  }
  @finally {
    UIGraphicsEndImageContext();
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2957800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档