标签: cgpdfcontext

如何在Swift中的PDF上下文中绘制文本?

我有一个简单的函数,创建PDF文件并返回其路径.

func createPDFFileAndReturnPath() -> String {

    let fileName = "pdffilename.pdf"
    let paths = NSSearchPathForDirectoriesInDomains(.LibraryDirectory, .UserDomainMask, true)
    let documentsDirectory = paths[0]
    let pathForPDF = documentsDirectory.stringByAppendingString("/" + fileName)

    UIGraphicsBeginPDFContextToFile(pathForPDF, CGRectZero, nil)

    UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, 100, 400), nil)

    let text = "text" //how to print this in whatever place?

    //text.drawInRect - this doesn't work

    UIGraphicsEndPDFContext()

    return pathForPDF
}
Run Code Online (Sandbox Code Playgroud)

cgpdfcontext swift ios8

9
推荐指数
2
解决办法
3450
查看次数

在iPad上创建的PDF文件无法在Windows上正确显示

我的iPhone应用程序创建PDF文件(Arial字体).普通的iPhone 3.1.x版本运行良好(除了在iPhone Docs或BlackBerry上无法正确查看iPhone上创建的PDF文件的已知问题).

当我更新我的OS 3.2和iPad项目时,它的工作原理相同,而且iPhone,iPad和Mac OS X(预览应用程序)上的PDF文件看起来仍然很棒.但是现在在Windows(Vista)上,Acrobat 9.3.1说"无法提取嵌入字体'XYZABC + ArialMT'.某些字符可能无法正确显示或打印".

事实上,Acrobat然后使用一些通用字体而不是Arial(或我尝试的任何其他字体).

每次创建PDF文件时,Quartz 3.2似乎都会生成这些"随机"嵌入字体名称(每次XYZABC都会发生变化).我不知道问题是否只是带有加号的有点奇怪的"临时"嵌入字体名称,或者Quartz 3.2嵌入字体的方式.

我已经尝试了我现有的代码(使用CGPDFContext*函数),以及新支持的UIGraphics*函数,结果相同.

如何在iPad上创建PDF文件以在Windows上正确显示?

pdf iphone fonts ipad cgpdfcontext

5
推荐指数
1
解决办法
4386
查看次数

iOS PDF编辑 - 结合FastPDFKit/CGPDFContext和libHaru

我正在尝试将PDF注释添加到iOS中的现有PDF文件中.

据我所知,使用FASTPDFKit/CGPDFContext,可以读取(但不能编辑)现有PDF文件中的几乎所有信息(如果我错了,请纠正我).

我也明白使用libHaru,在新的PDF文件上创建注释是一件小事.但libHaru不支持阅读现有的PDF文件.

是否有任何约束组合这两个库,以便我可以添加注释到现有的PDF文件?

谢谢

pdf libharu cgpdfcontext ios

5
推荐指数
1
解决办法
1904
查看次数

仅在某些页面上为CGContextDrawPDFPage释放上下文的异常

我继承了一些iOS代码,它打开源PDF并创建一个CGContextRef从源文档中绘制单个页面的代码.问题是,某些文档有一个文档,遗憾的是我们的帮助文档导致此代码崩溃.

最终目标是一次缓存8个页面以改善用户体验.

CFMutableDataRef consumerData = CFDataCreateMutable(kCFAllocatorDefault, 0);
CGDataConsumerRef contextConsumer = CGDataConsumerCreateWithCFData(consumerData);

CGPDFPageRef page = CGPDFDocumentGetPage(sourceDocument, pageNumber);

const CGRect mediaBox = CGPDFPageGetBoxRect(page, kCGPDFCropBox);
CGContextRef pdfOutContext = CGPDFContextCreate(contextConsumer, &mediaBox, NULL);

CGContextDrawPDFPage(pdfOutContext, page); //If I comment out this line, no exception occurs

CGPDFPageRelease(page);
CGPDFContextEndPage(pdfOutContext);

CGPDFContextClose(pdfOutContext); //EXC_BAD_ACCESS
CGContextRelease(pdfOutContext);
Run Code Online (Sandbox Code Playgroud)

(这是代码的简化版本,原来打开一个源文件和一个网页,检查对空pagectx,然后写入ctx到一个新的文件.)

如果不是绘制到PDF上下文,而是绘制到如此创建的UIGraphics上下文,那就没有问题了:

CGContextRef graphicsContext = UIGraphicsGetCurrentContext();

当我在PDF上下文中绘制其他内容时也没有问题.

此外,这适用于99%的文档和违规文档中75%的页面.违规文档在多个PDF查看器中正确呈现.

所以我认为我不会有内存问题.我相信CGPDF代码中有一些东西是错误的(我说只有花了一个星期才试图解决这个问题).

我的问题是,还有其他方式我应该/可以这样做吗?

objective-c cgpdfcontext cgcontextdrawpdfpage

5
推荐指数
1
解决办法
1582
查看次数

iPhone/iPad如同iBooks一样绘制pdf?

有谁知道如何使用核心图形来绘制像iBooks中的PDF格式.我已经可以使用核心图形绘制一个pdf页面,但很奇怪iBooks如何显示每个页面的低质量视图,因此它加载速度很快,然后当你在页面上停留时间更长时,它会呈现完整的质量.这使得它能够打开pdf,而不必让用户像你在ipad上看到的大多数杂志应用程序一样等待.任何想法都会有帮助!

iphone core-graphics cgpdfdocument ipad cgpdfcontext

2
推荐指数
1
解决办法
2717
查看次数