我很難確定如何在風景中正確打印。這是我作爲UIPrintPageRenderer的子類使用自定義打印頁面渲染:iOS - 如何在風景中生成PDF
@implementation CustomPrintPageRenderer
- (instancetype)init{
self = [super init];
if (self) {
self.A4PageWidth = 595.2;
self.A4PageHeight = 841.8;
CGRect pageFrame = CGRectMake(0.0, 0.0, self.A4PageWidth, self.A4PageHeight);
[self setValue:[NSValue valueWithCGRect:pageFrame] forKey:@"paperRect"];
[self setValue:[NSValue valueWithCGRect:CGRectInset(pageFrame, 1.0, 1.0)] forKey:@"printableRect"];
}
return self;
}
@end
,這裏是說需要HTML,生成PDF的代碼,並返回文件路徑(這是一個1024像素寬的形式必須是這個寬度爲客戶):
`-(NSString *) exportHTMLContentToPDF {
CustomPrintPageRenderer *cppr = [[CustomPrintPageRenderer alloc]init];
UIMarkupTextPrintFormatter *printFormatter = [[UIMarkupTextPrintFormatter alloc]initWithMarkupText:self.finalHTML];
[cppr addPrintFormatter:printFormatter startingAtPageAtIndex:0];
NSData * pdfData = [self drawPDF:cppr];
NSString *fileName = [NSString stringWithFormat:@"%@.pdf", self.ts.timesheetID];
NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:fileName];
[pdfData writeToFile:filePath atomically:YES];
return filePath;
}
-(NSData *)drawPDF:(CustomPrintPageRenderer *)cppr {
NSMutableData *data = [[NSMutableData alloc]init];
UIGraphicsBeginPDFContextToData(data, CGRectZero, nil);
UIGraphicsBeginPDFPage();
[cppr drawPageAtIndex:0 inRect:UIGraphicsGetPDFContextBounds()];
UIGraphicsEndPDFContext();
return data;
}`
目前打印在縱向頁面精美,但由於其廣泛的它迫使它適合縱向寬度和縮小的內容。如果我交換A4高度/寬度尺寸,它不再縮小內容,但是從右側切掉大約20%(這裏是眼球)。
編輯:這將只適用於單頁文檔。看看如何在繪製之前轉換PDF上下文。
所以也許我在想這個錯誤。調整寬度/高度使其像橫向佈局一樣,什麼都不做。它仍然打印肖像。因此,我需要確定如何保留縱向尺寸,但在生成PDF數據之前將整個HTML頁面向左旋轉90度。如果此操作有效,將稍後更新。否則,任何其他建議將不勝感激!
你有什麼發現? –