【发布时间】:2013-08-01 23:04:36
【问题描述】:
我正在使用以下代码将 HTML 转换为 PDF(由 cwehrung 在各个地方发布)
UIPrintPageRenderer *render = [[UIPrintPageRenderer alloc] init];
[render addPrintFormatter:webView.viewPrintFormatter startingAtPageAtIndex:0];
CGRect printableRect = CGRectMake(self.pageMargins.left,
self.pageMargins.top,
self.pageSize.width - self.pageMargins.left - self.pageMargins.right,
self.pageSize.height - self.pageMargins.top - self.pageMargins.bottom);
CGRect paperRect = CGRectMake(0, 0, self.pageSize.width, self.pageSize.height);
[render setValue:[NSValue valueWithCGRect:paperRect] forKey:@"paperRect"];
[render setValue:[NSValue valueWithCGRect:printableRect] forKey:@"printableRect"];
NSData *pdfData = [render printToPDF];
[pdfData writeToFile: self.PDFpath atomically: YES];
在 UIPrintPageRenderer 上创建了一个类别来支持:
-(NSData*) printToPDF
{
[self doNotRasterizeSubviews:self.view];
NSMutableData *pdfData = [NSMutableData data];
UIGraphicsBeginPDFContextToData( pdfData, self.paperRect, nil );
[self prepareForDrawingPages: NSMakeRange(0, self.numberOfPages)];
CGRect bounds = UIGraphicsGetPDFContextBounds();
for ( int i = 0 ; i < self.numberOfPages ; i++ )
{
UIGraphicsBeginPDFPage();
[self drawPageAtIndex: i inRect: bounds];
}
UIGraphicsEndPDFContext();
return pdfData;
}
我遇到的问题是图像和文本之间的对齐问题。
我将 HTML 文件上传到 here,在我上传到 here 的转换后的 PDF 文件中很容易看到问题。 (见第 3 本书和第 6 本书)
任何帮助将不胜感激!
【问题讨论】:
-
差别不大....我觉得还可以
-
您可以更改框架pdf。
-
在 UIGraphicsBeginPDFContextToData 中尝试设置边界 根据 Apple 文档: bound - 一个矩形,指定 PDF 页面的默认大小和位置。 (此值用作每个新页面的默认媒体框。)矩形的原点通常应为 (0, 0)。指定一个空矩形 (CGRectZero) 会将默认页面大小设置为 8.5 x 11 英寸(612 x 792 磅)。尝试将 CGRectZero 更改为另一个值 ..:)
-
用户,iPhoneNerd,感谢您的回复,但更改 PDF 矩形只会将问题移至其他位置。无论帧大小如何,我都需要一种方法来保持图像和文本始终同步。
-
你是怎么解决这个问题的?我遇到了类似的问题