24.10.2011

für CorePlot 0.9, Xcode 4

CorePlot: Speichern von Diagrammen als PDF

Im Folgenden wird erklärt, wie ein CorePlot-Diagramm als PDF-Datei abgespeichert werden kann. Als Vorlage kann entweder Tutorial: CorePlot Liniendiagramm oder Tutorial: CorePlot Balkendiagramm verwendet werden. In dem Beispiel wird ein zusätzlicher Button in die Oberfläche eingebaut, der mit einer Methode zum Speichern verbunden wird. Die Methode öffnet einen Speichern-Dialog, der es dem Benutzer ermöglicht einen Dateinamen einzugeben.

Als erstes muß eine IBAction in der Header-Datei hinzugefügt werden. In dem Beispiel hat sie den Namen saveAsPDF. Diese Methode soll aufgerufen werden, wenn der Benutzer einen Button Save as PDF anklickt.

-(IBAction)saveAsPDF:(id)sender;

Die Implementierung zu der Methode sieht folgendermaßen aus:

-(IBAction)saveAsPDF:(id)sender {
    NSData *pdfRepresentation = [view.hostedGraph dataForPDFRepresentationOfLayer];

    NSSavePanel *pdfSaveDialog = [NSSavePanel savePanel];
    [pdfSaveDialog setRequiredFileType:@"pdf"];

    if ( [pdfSaveDialog runModalForDirectory:nil file:nil] == NSOKButton ) {
     [pdfRepresentation writeToFile:[pdfSaveDialog filename] atomically:NO];
    }
}

CorePlot stellt die Funktionalität bereit über den hostedGraph der view eine PDF-Representation des Diagramms abzufragen. Der Rückgabewert ist einfach ein Objekt vom Type NSData. Nach der Eingabe eines Dateinamen (filename) in den Speicherndialog (NSSavePanel), werden die PDF-Daten mit der Methode writeToFile:atomically: auf die Platte geschrieben.

Damit die Methode saveAsPDF angesprochen werden kann, muß der InterfaceBuilder gestartet werden. Dort wird ein neuer NSButton eingefügt und der Titel Save as PDF eingetragen.

Der neue Button wird nun mit der Methode saveAsPDF verbunden. Dazu wird im InterfaceBuilder der Push Button (Save as PDF) selektiert und mittels crtl-drag auf den Core Plot Linien Dia App Delegate gezogen. Dort wird saveAsPDF ausgewählt.

Nach dem Speichern und Kompilieren läßt sich nun das CorePlot-Diagramm als PDF-Datei speichern. Wenn die Anwendung gestartet ist und der Button Save as PDF angeklickt wird, dann sollte ungefähr folgendes zu sehen sein: