使用自定义字体在 CGContextRef 和 PDF 中打印 NSString

Posted

技术标签:

【中文标题】使用自定义字体在 CGContextRef 和 PDF 中打印 NSString【英文标题】:Print NSString in CGContextRef and PDF with a custom font 【发布时间】:2013-09-16 12:22:53 【问题描述】:

我正在尝试使用自定义字体创建新的 PDF。

我加载了我的自定义字体,我可以在所有应用程序中使用它,但是当我尝试使用它创建我的 PDF 时,系统字体被打印出来。

我正在使用 NSString UIKit Additions。

+(UIFont *)imagoBook:(float)size
    return [UIFont fontWithName:@"Imago-Book" size:size];


-(NSData *)createPDFfromUIView

    NSMutableData *pdfData = [NSMutableData data];

    UIGraphicsBeginPDFContextToData(pdfData, self.bounds, nil);

    UIGraphicsBeginPDFPage();

    UIFont *imagoBook13 = [ROCTextsInformation imagoBook:13];
    [@"Test" drawAtPoint:CGPointZero withFont:imagoBook13];

    UIGraphicsEndPDFContext();

    // Retrieves the document directories from the ios device
    NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);


    NSString* documentDirectory = [documentDirectories objectAtIndex:0];
    NSString* documentDirectoryFilename = [documentDirectory stringByAppendingPathComponent:@"t.pdf"];


    // instructs the mutable data object to write its context to a file on disk
    [pdfData writeToFile:documentDirectoryFilename atomically:YES];
    NSLog(@"documentDirectoryFileName: %@",documentDirectoryFilename);

    return pdfData;

事实上,我在视图中绘制了相同的上下文,字体写得很完美,但不是在 pdf 中。

我正在为字体使用 otf 文件。

谢谢

【问题讨论】:

什么是imagoBook10 这里的信息可能会让您感兴趣:***.com/questions/8980388/ios-embed-font-in-pdf 感谢 ipmcc 提供的信息。我做了更多的测试,我检查了问题可能出在文件字体“otf”的类型上。我已经用其他“otf”文件进行了测试,得到了相同的结果,但是我用“ttf”文件进行了测试,它工作得很好。 【参考方案1】:

我终于解决了将文件 .otf 转换为 .ttf 的问题,并且可以正常工作!

【讨论】:

以上是关于使用自定义字体在 CGContextRef 和 PDF 中打印 NSString的主要内容,如果未能解决你的问题,请参考以下文章

CGContext 和 CGContextRef 在 Swift 中一样吗?这是如何运作的?

DOMPDF 的自定义字体

在Google Web Toolkit中使用自定义字体

在 Android 中使用自定义字体

自定义字体和 XML 布局 (Android)

如何在 codeigniter 中使用自定义字体和图标