objective-c – 在特定页面中绘制现有PDF文档的内容

objective-c – 在特定页面中绘制现有PDF文档的内容,第1张

概述所以我正在为iPad实现一种特定类型的PDF编辑器,供个人使用. 我已经实现了PDF查看器,现在我被困在编辑部分.这是交易: 我在UIView中显示文档的每个页面,然后创建另一个视图,其中包含完全相同的页面大小.然后我让用户在视图上绘制 现在,假设我想在它绘制的PDF文件的确切页面中打印出UIVIiew. 我知道有一种方法可以做到这一点,但是对于更大的文档来说,这需要太长时间. 我是这样做的(简化 所以我正在为iPad实现一种特定类型的pdf编辑器,供个人使用.
我已经实现了pdf查看器,现在我被困在编辑部分.这是交易:
我在UIVIEw中显示文档的每个页面,然后创建另一个视图,其中包含完全相同的页面大小.然后我让用户在视图上绘制

现在,假设我想在它绘制的pdf文件的确切页面中打印出UIVIIEw.
我知道有一种方法可以做到这一点,但是对于更大的文档来说,这需要太长时间.
我是这样做的(简化了代码以便更好地理解):

UIGraphicsBeginPdfcontextTofile(file,pageSize,nil);for (size_t currentPage = 1; currentPage <= pageCount; currentPage++) {    UIGraphicsBeginpdfpageWithInfo(pageSize,nil);    CGContextRef ctx = UIGraphicsGetCurrentContext();    //translates context,copIEs doc page to the new pdf,translates back    CGContextTranslateCTM(ctx,pageSize.size.height);    CGContextScaleCTM(ctx,1.0,-1.0);     CGpdfpageRef page = CGpdfdocumentGetPage (document,currentPage);    CGContextDrawpdfpage (ctx,page);    CGContextScaleCTM(ctx,-1.0);    CGContextTranslateCTM(ctx,-pageSize.size.height);    //custom drawing goes here    if(currentPage == desiredPage) [imageFromVIEw drawInRect:pageSize];}UIGraphicsEndPdfcontext();

这里的问题是此过程重新创建整个pdf,对于较大的文档,这可能需要几分钟才能完成.

我需要一个解决方案,在pdf文档的页面中打印UIVIEw(用户绘制的),而无需重新创建整个文档.

任何链接,提示和其他有用的信息非常感谢.提前致谢

解决方法 在iOS上只有CGpdf,这不支持可变性,因为Mac的pdfdocument部分支持.

您必须编写自己的解决方案来获取未修改页面的pdf流,并将它们与您正在创建的新页面合并.我开始了一个用于DTpdfdocument包装器的开源项目,该包装器模仿Mac上的那个,但到目前为止我在移动或修改页面时没有做任何工作:https://github.com/Cocoanetics/DTPDF

或者您可以使用许多可用的pdf框架之一. PSpdfKit是第一个浮现在脑海中的人.

总结

以上是内存溢出为你收集整理的objective-c – 在特定页面中绘制现有PDF文档的内容全部内容,希望文章能够帮你解决objective-c – 在特定页面中绘制现有PDF文档的内容所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1079319.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存