gpt4 book ai didi

ios - 从带有 subview 的单个 UIView 生成多页 PDF

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:07:01 24 4
gpt4 key购买 nike

我无法从单个 UIView 将我的 PDF 分成多个页面。我试图让这个尽可能简单。我有一个高度可以变化的 UIScrollView。截至目前,我可以让第一页正确显示,但之后什么都没有。在这一点上我很困惑。这是我拥有的:

NSMutableData *pdfData = [NSMutableData data];

UIGraphicsBeginPDFContextToData(pdfData, CGRectZero, nil);

CGContextRef pdfContext = UIGraphicsGetCurrentContext();
NSInteger pageHeight = 867;

for (int originY = 0; originY < self.scrollView.contentSize.height; originY += pageHeight) {

// Start a new page.
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0,originY,768,pageHeight), nil);

[self.scrollView.layer renderInContext:pdfContext];

for (UIView *subview in self.scrollView.subviews) {
[subview.layer renderInContext:pdfContext];
}

}

UIGraphicsEndPDFContext();

我试图遍历这个单一的 UIScrollView 并根据这个框架挑选出“页面”,但这并不完全有效。任何帮助,将不胜感激。我已阅读有关此主题的苹果文档,但在将其转换为我自己的应用程序时遇到了问题。

最佳答案

这对我来说效果很好。让您的生活更轻松,只需调用 CGContextTranslateCTM。

NSInteger pageHeight = 792; // Standard page height - adjust as needed
NSInteger pageWidth = 612; // Standard page width - adjust as needed

/* CREATE PDF */
NSMutableData *pdfData = [NSMutableData data];
UIGraphicsBeginPDFContextToData(pdfData, CGRectMake(0,0,pageWidth,pageHeight), nil);
CGContextRef pdfContext = UIGraphicsGetCurrentContext();
for (int page=0; pageHeight * page < scrollView.frame.size.height; page++)
{
UIGraphicsBeginPDFPage();
CGContextTranslateCTM(pdfContext, 0, -pageHeight * page);
[scrollView.layer renderInContext:pdfContext];
}

UIGraphicsEndPDFContext();

关于ios - 从带有 subview 的单个 UIView 生成多页 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21242409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com