मैं अपने आईओएस 6 ऐप में एक अच्छा दिखने वाला पीडीएफ जेनरेट करना चाहता हूं।मैं आईओएस पर "असली" टेक्स्ट सामग्री के साथ पीडीएफ कैसे उत्पन्न कर सकता हूं?
मैं कोशिश की है:
- UIView संदर्भ
- में प्रस्तुत करना CoreText
- का उपयोग UILabel drawRect
यहाँ एक कोड उदाहरण का उपयोग कर रहा है NSString drawInRect
-(CGContextRef) createPDFContext:(CGRect)inMediaBox path:(NSString *) path
{
CGContextRef myOutContext = NULL;
NSURL * url;
url = [NSURL fileURLWithPath:path];
if (url != NULL) {
myOutContext = CGPDFContextCreateWithURL ((__bridge CFURLRef) url,
&inMediaBox,
NULL);
}
return myOutContext;
}
-(void)savePdf:(NSString *)outputPath
{
if (!pageViews.count)
return;
UIView * first = [pageViews objectAtIndex:0];
CGContextRef pdfContext = [self createPDFContext:CGRectMake(0, 0, first.frame.size.width, first.frame.size.height) path:outputPath];
for(UIView * v in pageViews)
{
CGContextBeginPage (pdfContext,nil);
CGAffineTransform transform = CGAffineTransformIdentity;
transform = CGAffineTransformMakeTranslation(0, (int)(v.frame.size.height));
transform = CGAffineTransformScale(transform, 1, -1);
CGContextConcatCTM(pdfContext, transform);
CGContextSetFillColorWithColor(pdfContext, [UIColor whiteColor].CGColor);
CGContextFillRect(pdfContext, v.frame);
[v.layer renderInContext:pdfContext];
CGContextEndPage (pdfContext);
}
CGContextRelease (pdfContext);
}
प्रदान किए गए UIViews में केवल UIImageView + UILabels का एक समूह होता है (कुछ के साथ और कुछ सीमाओं के बिना)। UILabel उपवर्गीकरण और यह कर:
मैं भी एक सुझाव stackoverflow पर पाया की कोशिश की
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
BOOL isPDF = !CGRectIsEmpty(UIGraphicsGetPDFContextBounds());
if (!layer.shouldRasterize && isPDF)
[self drawRect:self.bounds]; // draw unrasterized
else
[super drawLayer:layer inContext:ctx];
}
लेकिन है कि या तो कुछ भी नहीं बदला।
कोई फर्क नहीं पड़ता कि मैं क्या करता हूं, पूर्वावलोकन में पीडीएफ खोलते समय टेक्स्ट पार्ट्स ब्लॉक के रूप में चयन योग्य होते हैं, लेकिन चरित्र प्रति चरित्र नहीं, और पीडीएफ ज़ूम करने से पता चलता है कि यह वास्तव में एक बिटमैप छवि है।
कोई सुझाव?
क्या आप नमूना कोड खंड और आउटपुट पीडीएफ फाइल पोस्ट कर सकते हैं ताकि मैं उन्हें देख सकूं? – iPDFdev
क्या आपने कभी यह पता लगाया है? "ब्लॉक चयन" मुद्दे का अनुभव करना। – JeremyDay
अब ऐसा नहीं लगता है: 'UIGraphicsBeginPDFContextToFile (outputPath, view.bounds, nil); UIGraphicsBeginPDFPage(); CGContextRef pdfContext = UIGraphicsGetCurrentContext(); [view.layer renderInContext: pdfContext]; UIGraphicsEndPDFContext(); ' – JeremyDay