gpt4 book ai didi

ios - UIPrintPageRenderer 不使用 UIMarkupTextPrintFormatter 绘制任何内容

转载 作者:行者123 更新时间:2023-11-29 13:30:23 25 4
gpt4 key购买 nike

我第一次接触这项技术。

基本上,我得到了一个核心数据数据库,其中包含我希望从中生成表格的数据。

我在这里找到这篇文章:

Is there any way to generate PDF file from a XML/HTML template in iOs

但我在尝试从生成的 PDF 中获取可见内容时遇到了麻烦。

到目前为止,我只设法让 PDF 显示 2 个空白的白页,它不会打印我的简单文本。

这是我的类(class)文件:

// PageRenderer Class header file
#import <UIKit/UIKit.h>

@interface PageRenderer : UIPrintPageRenderer
{
BOOL _generatingPdf;
}

-(CGRect) paperRect;
-(CGRect) printableRect;
-(NSData*) printToPDF;

@end



// PageRenderer Class implementation file
#import "PageRenderer.h"

@implementation PageRenderer

- (CGRect) paperRect
{
if (!_generatingPdf)
{
return [super paperRect];
}

return UIGraphicsGetPDFContextBounds();
}

- (CGRect) printableRect
{
if (!_generatingPdf)
return [super printableRect];

return CGRectInset( self.paperRect, 20, 20 );
}

- (NSData*) printToPDF
{
_generatingPdf = YES;

NSMutableData *pdfData = [NSMutableData data];

UIGraphicsBeginPDFContextToData( pdfData, CGRectMake(0, 0, 792, 612), nil ); // letter-size, landscape

[self prepareForDrawingPages: NSMakeRange(0, 1)];

CGRect bounds = UIGraphicsGetPDFContextBounds();

for ( int i = 0 ; i < self.numberOfPages ; i++ )
{
UIGraphicsBeginPDFPage();

[self drawPageAtIndex: i inRect: bounds];
}

UIGraphicsEndPDFContext();

_generatingPdf = NO;

// NSString* filename = @"/Volumes/Macintosh HD 2/test.pdf";
// [pdfData writeToFile: filename atomically: YES];

return pdfData;
}

- (NSInteger)numberOfPages
{
return 1;
}

@end

这是我生成 PDF 文件的代码:

-(void)generateLog
{
UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];

pic.delegate = self;

PageRenderer *pageRenderer = [[PageRenderer alloc] init];

pic.printPageRenderer = pageRenderer;

UIMarkupTextPrintFormatter *html = [[UIMarkupTextPrintFormatter alloc] init];
//html.markupText = @"<table border='1' width='500' height='200'>";
html.markupText = @"<html><head></head><body><p>HTML TEXT HERE, <b>BOLD</b> THIS!</p></body></html>";
html.startPage = 0;
html.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); // 1 inch margins
html.maximumContentWidth = 6 * 72.0;

pic.printFormatter = html;

[pageRenderer drawPrintFormatter:html forPageAtIndex:0];

NSData *pdfData = [pageRenderer printToPDF];

[pdfData writeToFile:[MediaDirectory mediaPathForFileName:@"triplog.pdf"] atomically:YES];

NSLog(@"triplog.pdf written to %@", [MediaDirectory mediaPathForFileName:@"triplog.pdf"]);

[html release];
}

为什么我得到一个空白页有什么想法吗?

最佳答案

-_-!终于有东西了!

看来我需要使用:

[pageRenderer addPrintFormatter:html startingAtPageAtIndex:0];

代替:

[pageRenderer drawPrintFormatter:html forPageAtIndex:0];

在我这样做之后,它开始工作了。

关于ios - UIPrintPageRenderer 不使用 UIMarkupTextPrintFormatter 绘制任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12057224/

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