[Iphone] ؛ يوس سك - برمجيا إنشاء ملف بدف


Answers

انها الرد في وقت متأخر، ولكن كما ناضلت كثيرا مع جيل قوات الدفاع الشعبي، واعتبر أنه من المفيد لتبادل وجهات نظري. بدلا من الرسومات الأساسية، لإنشاء سياق، يمكنك أيضا استخدام أساليب إيكيت لتوليد قوات الدفاع الشعبي.

وقد وثقت أبل بشكل جيد في دليل الرسم والطباعة.

Question

استخدام إطار كوريغرافيكس عمل شاق، في رأيي صادقة، عندما يتعلق الأمر برمجيا رسم ملف بدف.

أود أن برمجيا إنشاء بدف ، وذلك باستخدام الكائنات المختلفة من وجهات النظر في جميع أنحاء بلدي التطبيق.

أنا مهتم لمعرفة ما إذا كان هناك أي دروس بدف جيدة حول ل سك دائرة الرقابة الداخلية، وربما قطرة في المكتبة.

لقد رأيت هذا البرنامج التعليمي، بدف خلق تعليمي ، ولكن كان في الغالب مكتوب في C. تبحث عن المزيد من الهدف-C الاسلوب. هذا يبدو أيضا وكأنه وسيلة سخيفة للكتابة إلى ملف بدف، الحاجة إلى حساب حيث سيتم وضع خطوط وغيرها من الأشياء.

void CreatePDFFile (CGRect pageRect, const char *filename) 
{   
    // This code block sets up our PDF Context so that we can draw to it
    CGContextRef pdfContext;
    CFStringRef path;
    CFURLRef url;
    CFMutableDictionaryRef myDictionary = NULL;

    // Create a CFString from the filename we provide to this method when we call it
    path = CFStringCreateWithCString (NULL, filename,
                                      kCFStringEncodingUTF8);

    // Create a CFURL using the CFString we just defined
    url = CFURLCreateWithFileSystemPath (NULL, path,
                                         kCFURLPOSIXPathStyle, 0);
    CFRelease (path);
    // This dictionary contains extra options mostly for 'signing' the PDF
    myDictionary = CFDictionaryCreateMutable(NULL, 0,
                                             &kCFTypeDictionaryKeyCallBacks,
                                             &kCFTypeDictionaryValueCallBacks);

    CFDictionarySetValue(myDictionary, kCGPDFContextTitle, CFSTR("My PDF File"));
    CFDictionarySetValue(myDictionary, kCGPDFContextCreator, CFSTR("My Name"));
    // Create our PDF Context with the CFURL, the CGRect we provide, and the above defined dictionary
    pdfContext = CGPDFContextCreateWithURL (url, &pageRect, myDictionary);
    // Cleanup our mess
    CFRelease(myDictionary);
    CFRelease(url);
    // Done creating our PDF Context, now it's time to draw to it

    // Starts our first page
    CGContextBeginPage (pdfContext, &pageRect);

    // Draws a black rectangle around the page inset by 50 on all sides
    CGContextStrokeRect(pdfContext, CGRectMake(50, 50, pageRect.size.width - 100, pageRect.size.height - 100));

    // This code block will create an image that we then draw to the page
    const char *picture = "Picture";
    CGImageRef image;
    CGDataProviderRef provider;
    CFStringRef picturePath;
    CFURLRef pictureURL;

    picturePath = CFStringCreateWithCString (NULL, picture,
                                             kCFStringEncodingUTF8);
    pictureURL = CFBundleCopyResourceURL(CFBundleGetMainBundle(), picturePath, CFSTR("png"), NULL);
    CFRelease(picturePath);
    provider = CGDataProviderCreateWithURL (pictureURL);
    CFRelease (pictureURL);
    image = CGImageCreateWithPNGDataProvider (provider, NULL, true, kCGRenderingIntentDefault);
    CGDataProviderRelease (provider);
    CGContextDrawImage (pdfContext, CGRectMake(200, 200, 207, 385),image);
    CGImageRelease (image);
    // End image code

    // Adding some text on top of the image we just added
    CGContextSelectFont (pdfContext, "Helvetica", 16, kCGEncodingMacRoman);
    CGContextSetTextDrawingMode (pdfContext, kCGTextFill);
    CGContextSetRGBFillColor (pdfContext, 0, 0, 0, 1);
    const char *text = "Hello World!";
    CGContextShowTextAtPoint (pdfContext, 260, 390, text, strlen(text));
    // End text

    // We are done drawing to this page, let's end it
    // We could add as many pages as we wanted using CGContextBeginPage/CGContextEndPage
    CGContextEndPage (pdfContext);

    // We are done with our context now, so we release it
    CGContextRelease (pdfContext);
}

إديت: إليك مثال على جيثب باستخدام ليبهارو في مشروع إفون.




في وقت متأخر، ولكن ربما مفيدة للآخرين. يبدو وكأنه نمط قالب بدف من العملية قد يكون النهج الذي تريد بدلا من بناء بدف في التعليمات البرمجية. نظرا لأنك تريد إرساله بالبريد الإلكتروني على أي حال، فإنك متصل بالشبكة حتى تتمكن من استخدام شيء مثل خدمة دوكوموسيس السحابية التي هي على نحو فعال خدمة دمج البريد. إرسال البيانات / الصور لدمج مع القالب الخاص بك. هذا النوع من النهج لديه فائدة أقل بكثير رمز وتفريغ معظم المعالجة من التطبيق باد الخاص بك. لقد رأيت أنها تستخدم في التطبيق باد وكان لطيفا.