Einzelnen Beitrag anzeigen

Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#25

AW: MobileApps @ Apple App Store

  Alt 17. Jul 2013, 16:46
OK! Du warst zwar schneller, aber ich habe ein Delphi Beispiel

Delphi-Quellcode:
procedure TForm6.Button1Click(Sender: TObject);
var
  pdfContext : CGConTextRef;
  Path : CFStringRef;
  URL : CFURLRef;
  myDictionary : CFMutableDictionaryRef;
  PageRect : CGRect;
  Filename,
  Title,
  Creator : String;
  DPI : Integer;
begin
  DPI := 72;
  PageRect.origin.x := 0;
  PageRect.origin.y := 0;
  PageRect.size.width := 8*DPI;
  PageRect.size.height := 11*DPI;


  Filename := GetHomePath + PathDelim + 'Documents' + PathDelim+'MyPDF.PDF';
  path := CFStringCreateWithCString (NIL, MarshaledAString(utf8Encode(Filename)),kCFStringEncodingUTF8);
  url := CFURLCreateWithFileSystemPath (Nil, path, kCFURLPOSIXPathStyle, false);
  CFRelease(path);

  // This dictionary contains extra options mostly for 'signing' the PDF
  myDictionary := CFDictionaryCreateMutable(NIL, 0,NIL,NIL);
// @kCFTypeDictionaryKeyCallBacks,
// @kCFTypeDictionaryValueCallBacks);
  Title := 'kCGPDFContextTitle';
  Creator := 'kCGPDFContextCreator';
  CFDictionarySetValue(myDictionary, @Title, CFSTR('My PDF File'));
  CFDictionarySetValue(myDictionary, @Creator, CFSTR('Mavarik'));

  // Create our PDF Context with the CFURL, the CGRect we provide, and the above defined dictionary
  pdfContext := CGPDFContextCreateWithURL(url, @pageRect, CFDictionaryRef(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));

  CGContextSelectFont (pdfContext, 'Helvetica', 16, kCGEncodingMacRoman);
  CGContextSetTextDrawingMode (pdfContext, kCGTextFill);
  CGContextSetRGBFillColor (pdfContext, 0, 0, 0, 1);
  CGContextShowTextAtPoint (pdfContext, 100, 100, 'Hallo World PDF1', strlen('Hallo World PD1'));
  CGContextShowTextAtPoint (pdfContext, 100, 200, 'Hallo World PDF2', strlen('Hallo World PD2'));
  CGContextShowTextAtPoint (pdfContext, 200, 300, 'Hallo World PDF3', strlen('Hallo World PD3'));
  CGContextEndPage (pdfContext);

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

    {
    // 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

    Webbrowser1.Navigate('file://'+GetHomePath + PathDelim + 'Documents' + PathDelim+'MyPDF.PDF');
end;

Grüsse Mavarik
  Mit Zitat antworten Zitat