ios - 从表格 View 生成 PDF 时出现问题
<p><p>我必须从具有多个部分和行的 <code>UITableView</code> 生成 PDf。</p>
<p> <a href="/image/G3k2b.png" rel="noreferrer noopener nofollow"><img src="/image/G3k2b.png" alt="image"/></a> </p>
<p>我也生成了 pdf,但问题是在创建 PDF 时,它会剪切某些行的数据并显示在其他页面上。 </p>
<p>因此,请提出任何有助于创建 PDf 的动态逻辑,该 PDf 在页面上包含数据而无需转到其他 Page 。 </p>
<p>另外请在下面找到我用来创建 PDF 的代码。</p>
<pre><code>CGRect priorBounds = self.tableView.bounds;
CGSize fittedSize = ;
self.tableView.bounds = CGRectMake(0, 0, 612, fittedSize.height);
CGRect pdfPageBounds = CGRectMake(0, 0, 612, 792); // Change this as your need
NSMutableData *pdfData = [ init];
UIGraphicsBeginPDFContextToData(pdfData, pdfPageBounds, nil); {
for (CGFloat pageOriginY = 0; pageOriginY < fittedSize.height; pageOriginY += pdfPageBounds.size.height) {
UIGraphicsBeginPDFPageWithInfo(pdfPageBounds, nil);
CGContextSaveGState(UIGraphicsGetCurrentContext()); {
CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0, -pageOriginY);
;
} CGContextRestoreGState(UIGraphicsGetCurrentContext());
}
} UIGraphicsEndPDFContext();
self.tableView.bounds = priorBounds; // Reset the tableView
// Use the pdfData to
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = ;
//Get the docs directory
NSString *filePathPDF = ; //Add the file name
;
</code></pre>
<p>任何帮助将不胜感激。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>在这方面做了很多研发,终于得到了解决方案。
我知道这为时已晚,无法发布上述问题的答案,但我正在发布我的解决方案,以便将来对某人有所帮助。</p>
<p>我用来避免这个问题的技巧是,逐节运行循环并拍摄每个动态单元格的照片。</p>
<p>然后我开始通过下面的函数组合单元格的图像,</p>
<pre><code>- (UIImage*)imageByCombiningImage:(UIImage*)firstImage withImage:(UIImage*)secondImage {
UIImage *image1 = firstImage;
UIImage *image2 = secondImage;
CGSize size = CGSizeMake(image1.size.width, image1.size.height + image2.size.height);
UIGraphicsBeginImageContext(size);
;
;
UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//set finalImage to IBOulet UIImageView
return finalImage;
}
</code></pre>
<p>为了生成组合图像,我使用了以下逻辑。在那我检查了组合图像的高度,它是否大于屏幕尺寸。
以下是我的整个代码逻辑,</p>
<pre><code>CGRect priorBounds = self.tableView.bounds;
CGSize fittedSize = ;
self.tableView.bounds = CGRectMake(0, 0, fittedSize.width, fittedSize.height);
pdfViews = [ init];
NSMutableData *pdfData = [ init];
float sections = ;
for (int C = 0; C < sections; C++)
{
int rows = 0;
rows = ;
for (int I = 0; I < rows; I++)
{
NSIndexPath *indexPath = ;
UITableViewCell *cell = ;
UIGraphicsBeginImageContextWithOptions(cell.bounds.size, cell.opaque, 0.0);
;
UIImage *cellImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
;
}
}
NSArray *pageArray = pdfViews;
UIImage *pdfFinalImage = [ init];
UIImage *addOnImage = [ init];
NSMutableArray *finalA = [ init];
int checkHeight;
checkHeight = 1024;
for (int Z = 0; Z < ; Z++)
{
if (Z == 0)
{
pdfFinalImage = ;
}else if (Z+1 == )
{
addOnImage = ;
if (pdfFinalImage.size.height+addOnImage.size.height > checkHeight)
{
;
pdfFinalImage = ;
;
}else
{
pdfFinalImage = ;
;
}
}else
{
UIImage *heightCheckImage = ;
if (pdfFinalImage.size.height+heightCheckImage.size.height > checkHeight)
{
;
pdfFinalImage = ;
}else
{
addOnImage = ;
pdfFinalImage = ;
}
}
}
UIGraphicsBeginPDFContextToData(pdfData, CGRectMake(0, 0, 768, 1024), nil);
for (int IC = 0; IC < ; IC++)
{
UIGraphicsBeginPDFPage();
UIImage *mainImage = ;
NSData *jpegData = UIImageJPEGRepresentation(mainImage, 0.5);
CGDataProviderRef dp = CGDataProviderCreateWithCFData((__bridge CFDataRef)jpegData);
CGImageRef cgImage = CGImageCreateWithJPEGDataProvider(dp, NULL, true, kCGRenderingIntentDefault);
[ drawInRect:CGRectMake(0, 0, mainImage.size.width, mainImage.size.height)];
}
UIGraphicsEndPDFContext();
self.tableView.bounds = priorBounds;
;
</code></pre></p>
<p style="font-size: 20px;">关于ios - 从表格 View 生成 PDF 时出现问题,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/33515228/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/33515228/
</a>
</p>
页:
[1]