Hallo alle zusammen,
ich stehe vor einem recht großen Problem.
In meiner App möchte ich mehrere PDF's zu einer Datei zusammenführen.
Das Problem ist allerdings, dass die PDF's Formularfelder besitzen.
Mit folgendem code, der im Netz schnell zu finden war, kann ich PDF's zwar verschmelzen lassen, allerdings verschwinden dann die Formularfelder.
Ich habe feststellen können, das mit dem Code writeToFile, einzelne Dokumente gespeichert werden können, ohne das die Formularfelder verschwinden.
Macht ja auch Sinn, da das PDF nicht "neu erstellt" wird, sondern quasi nur ins Dokumentenverzeichnis verschoben wird.
Habt ihr eine Idee ?
Hier der Code, mit dem das Zusammenführen geht, nur leider die Formularfelder verschwinden:
Alles anzeigen
ich stehe vor einem recht großen Problem.
In meiner App möchte ich mehrere PDF's zu einer Datei zusammenführen.
Das Problem ist allerdings, dass die PDF's Formularfelder besitzen.
Mit folgendem code, der im Netz schnell zu finden war, kann ich PDF's zwar verschmelzen lassen, allerdings verschwinden dann die Formularfelder.
Ich habe feststellen können, das mit dem Code writeToFile, einzelne Dokumente gespeichert werden können, ohne das die Formularfelder verschwinden.
Macht ja auch Sinn, da das PDF nicht "neu erstellt" wird, sondern quasi nur ins Dokumentenverzeichnis verschoben wird.
Habt ihr eine Idee ?
Hier der Code, mit dem das Zusammenführen geht, nur leider die Formularfelder verschwinden:
Quellcode
- NSString *pdfPath1 = [documentsDirectory stringByAppendingPathComponent:@"pdf1.pdf"];
- NSString *pdfPath2 = [documentsDirectory stringByAppendingPathComponent:@"pdf2.pdf"];
- NSString *pdfPathOutput = [documentsDirectory stringByAppendingPathComponent:@"outputFile.pdf"];
- CFURLRef pdfURL1 = (CFURLRef)CFBridgingRetain([[NSURL alloc] initFileURLWithPath:pdfPath1]);
- CFURLRef pdfURL2 = (CFURLRef)CFBridgingRetain([[NSURL alloc] initFileURLWithPath:pdfPath2]);
- CFURLRef pdfURLOutput = (CFURLRef)CFBridgingRetain([[NSURL alloc] initFileURLWithPath:pdfPathOutput]);
- CGPDFDocumentRef pdfRef1 = CGPDFDocumentCreateWithURL((CFURLRef)(pdfURL1));
- CGPDFDocumentRef pdfRef2 = CGPDFDocumentCreateWithURL((CFURLRef)(pdfURL2));
- NSInteger numberOfPages1 = CGPDFDocumentGetNumberOfPages(pdfRef1);
- NSInteger numberOfPages2 = CGPDFDocumentGetNumberOfPages(pdfRef2);
- CGContextRef writeContext = CGPDFContextCreateWithURL(pdfURLOutput, NULL, NULL);
- CGPDFPageRef page;
- CGRect mediaBox;
- NSLog(@"GENERATING PAGES FROM PDF 1 (%i)...", numberOfPages1);
- for (int i=1; i<=numberOfPages1; i++) {
- page = CGPDFDocumentGetPage(pdfRef1, i);
- mediaBox = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);
- CGContextBeginPage(writeContext, &mediaBox);
- CGContextDrawPDFPage(writeContext, page);
- CGContextEndPage(writeContext);
- }
- NSLog(@"GENERATING PAGES FROM PDF 2 (%i)...", numberOfPages2);
- for (int i=1; i<=numberOfPages2; i++) {
- page = CGPDFDocumentGetPage(pdfRef2, i);
- mediaBox = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);
- CGContextBeginPage(writeContext, &mediaBox);
- CGContextDrawPDFPage(writeContext, page);
- CGContextEndPage(writeContext);
- }
- NSLog(@"DONE!");
- CGPDFContextClose(writeContext);
- CFRelease(pdfURL1);
- CFRelease(pdfURL2);
- CFRelease(pdfURLOutput);
- CGPDFDocumentRelease(pdfRef1);
- CGPDFDocumentRelease(pdfRef2);
- CGContextRelease(writeContext);