NSImage - بعد المحاصيل PDF هو ضبابية
سؤال
وأنا أحاول اقتصاص NSImage الذي يحتوي على PDF. عند الطباعة أستخدمه drawInRect NSImage لأنها قد رسم فقط ما أحتاج - وهذا يعمل كبيرة
ولكن، الآن بدلا أحاول إنشاء NSImage جديد من مجرد المساحة المزروعة. لقد لعبت معه لفترة من الوقت، ثم وجدت هذا الرمز على CocoaBuilder:
- (NSImage *) imageFromRect: (NSRect) rect
{
NSAffineTransform * xform = [NSAffineTransform transform];
// translate reference frame to map rectangle 'rect' into first quadrant
[xform translateXBy: -rect.origin.x
yBy: -rect.origin.y];
NSSize canvas_size = [xform transformSize: rect.size];
NSImage * canvas = [[NSImage alloc] initWithSize: canvas_size];
[canvas lockFocus];
[xform concat];
// Get NSImageRep of image
NSImageRep * rep = [self bestRepresentationForDevice: nil];
[rep drawAtPoint: NSZeroPoint];
[canvas unlockFocus];
return [canvas autorelease];
}
وهذا يعمل، ولكن NSImage عاد هو ضبابية، والتي لم تعد مناسبة للطباعة. أي أفكار؟
المحلول
وlockFocus
/ unlockFocus
يؤدي النقطية رسم على مخبأ للصورة. هذا هو السبب في أنها منخفضة الدقة "ضبابية"، انها وربما misregistered. تحتاج ناقلات الرسم.
استخدم PDF عدة. أولا، تعيين مربع محصول كل صفحة إلى المستطيل الخاص. يجب أن تكون ثم قادرا على خلق NSImage بك اقتصاص من dataRepresentation
من PDFDocument.
نصائح أخرى
وهنا هو رمز لأداء ما أجاب بطرس Hosey. شكرا!
PDFDocument *thePDF = [[PDFDocument alloc] initWithData:pdfData];
PDFPage *thePage = [thePDF pageAtIndex:0];
NSRect pageCropRect = NSMakeRect(0, 100, 100, 100);
[thePage setBounds:pageCropRect forBox:kPDFDisplayBoxMediaBox];
NSImage *theCroppedImage = [[NSImage alloc] initWithData:[thePage dataRepresentation]];
لا تنتمي إلى StackOverflow