PDF mit Editierfeldern anzeigen/bearbeiten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • PDF mit Editierfeldern anzeigen/bearbeiten

    Guten Morgen,
    ein Kollege hat mir gestern ein Dokument geschickt, welches er gerne in unserer App hätte.
    Es ist ein Formular, in dem wir ein paar Eckdaten eintragen wollen.
    Dazu habe ich mit PDF-X Change Viewer ein paar Textfelder eingefügt, welche man anschließend ausfüllen kann. Auf dem Mac funktioniert dies auch, in der App sieht man zwar die Umrandung des Textfeldes, will man jedoch reinklicken, wird nur gezoomt. Eine Editierung des Feldes ist nicht möglich.
    Benötige ich hier noch ein spezielles Framework oder etwas anderes, damit ich es Editieren kann?

    Danke

    Gruß

    Peter
    Intelligente Sätze zu verfassen ist gar nicht so einfach. Schon ein einziger Buchstabendreher kann den ganzen Text urinieren... :whistling:
  • ja, das ist nicht ganz so einfach. selbst die hauseigene App (von Adobe / nicht der Viewer von apple) kann bei einem PDF nicht alles vollständig anzeigen/machen, wie die Desktop versionen. Ich glaube bei Javascript hat die auch so ihre Probleme.

    Ob es dafür ein spezielles Framework gibt, weiß ich nicht, aber es gibt auch andere apps, mit denen man Formulare anzeigen und verwenden kann.
  • Andere App fällt flach, Chef will alles in einem haben.
    Gibt es die Möglichkeit, das ich einen View erstelle in dem man alles einträgt, und diese Daten dann zu einem PDF generiert werden?
    Intelligente Sätze zu verfassen ist gar nicht so einfach. Schon ein einziger Buchstabendreher kann den ganzen Text urinieren... :whistling:
  • So, muss ich hier mal wieder rauskamen.
    Habe mich dafür entschieden, das PDF selbst zu gestallten.
    Bilder einbinden, Schrift in verschiedenen Schriftarten/größen geht auch Problemlos.
    Kann mir jemand einen Tipp geben wie ich am besten Ränder einfügen kann?
    In der Eingabemaske habe ich die Ränder mit einem Label gestaltet, welchem ich Ränder verpasst habe.

    Quellcode

    1. R1.layer.borderColor = [UIColor blackColor].CGColor;
    2. R1.layer.borderWidth = 3.0;


    Bekomme ich die Eigenschaften auch irgendwie in das PDF übertragen?

    Hier einmal der Code wie ich das PDF erstelle:

    Quellcode

    1. -(IBAction)PDFgenerate:(id)sender{
    2. pageSize = CGSizeMake(850, 2200);
    3. NSString * Filename = @"Fragebogen.pdf";
    4. NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    5. NSString *documentDirectory = [path objectAtIndex:0];
    6. NSString *pdfPathWithfileName = [documentDirectory stringByAppendingPathComponent:Filename];
    7. [self generatePDF:pdfPathWithfileName];
    8. }
    9. -(void)generatePDF:(NSString *)filepath{
    10. UIGraphicsBeginPDFContextToFile(filepath, CGRectZero, nil);
    11. UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, 850, 2200),nil);
    12. [self drawPic]; //Bild erzeugen
    13. self.allLabels = self.lFragebogen; //dummylabel
    14. [self drawTextLabel:100 pos2:50 schrift:30];
    15. self.allLabels = self ->R1; // geht noch nicht
    16. [self drawTextLabel:50 pos2:250 schrift:30];
    17. self.test = self.TextFirma;
    18. [self drawText:0 pos2:200 schrift:12];
    19. UIGraphicsEndPDFContext();
    20. }
    21. -(void)drawPic{
    22. CGRect imageRect = CGRectMake(450, 50, 350, 81);
    23. UIImage *image = [UIImage imageNamed:@"LOGO.JPG"];
    24. [image drawInRect:imageRect];
    25. }
    26. -(void)drawText:(int)posx pos2:(int)posy schrift:(int)fonts{
    27. CGContextRef context = UIGraphicsGetCurrentContext();
    28. UIFont * font = [UIFont fontWithName:@"Arial" size:fonts];
    29. CGContextSetFillColorWithColor(context, [UIColor blackColor].CGColor);
    30. CGRect textrect = CGRectMake(posx, posy, self.test.frame.size.width, self.test.frame.size.height); //test sollte unbenannt werden
    31. NSString *myString = self.test.text;
    32. NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
    33. paragraphStyle.lineBreakMode = NSLineBreakByTruncatingTail;
    34. paragraphStyle.alignment = NSTextAlignmentRight;
    35. NSDictionary *attributes = @{ NSFontAttributeName: font,
    36. NSParagraphStyleAttributeName: paragraphStyle };
    37. [myString drawInRect:textrect withAttributes:attributes];
    38. }
    39. -(void)drawTextLabel:(int)posx pos2:(int)posy schrift:(int)fonts{
    40. CGContextRef context = UIGraphicsGetCurrentContext();
    41. UIFont * font = [UIFont fontWithName:@"Arial" size:fonts];
    42. CGContextSetFillColorWithColor(context, [UIColor blackColor].CGColor);
    43. CGRect textrect = CGRectMake(posx, posy, self.allLabels.frame.size.width, self.allLabels.frame.size.height);
    44. NSString *myString = self.allLabels.text;
    45. NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
    46. paragraphStyle.lineBreakMode = NSLineBreakByTruncatingTail;
    47. paragraphStyle.alignment = NSTextAlignmentRight;
    48. NSDictionary *attributes = @{ NSFontAttributeName: font,
    49. NSParagraphStyleAttributeName: paragraphStyle };
    50. [myString drawInRect:textrect withAttributes:attributes];
    51. }
    Alles anzeigen


    Oder soll ich ein "Bild" zeichnen welches einfach nur aus den 4 Rändern besteht und den Text dann darüber legen?
    Intelligente Sätze zu verfassen ist gar nicht so einfach. Schon ein einziger Buchstabendreher kann den ganzen Text urinieren... :whistling:
  • macmoonshine schrieb:

    Zu Deiner ursprünglichen Frage: Es gibt in PDF mit FDF auch die Möglichkeit, Formulardaten getrennt zu speichern und in das PDF einzufügen.

    Aber wenn der normale Viewer keine Möglichkeit anbietet, Formularfelder auszufüllen, dann kann er diese auch nicht als .fdf speichern.
    Wobei mir grad beim Schreiben auffällt, dass Du normalerweise nur sinnvolles antwortest.... :)
    ... somit gehe ic nun davon aus, dass Du meinst er solle eine .fdf erstellen, diese kann er dann problemlos weitergeben. Ja, das ist recht einfach möglich. Ist ja nur eine Textdatei.

    Aber wenn er sich selbst ein Formular aufbaut, dann würde ich persönlich das PDF auch gleich aus den Daten erstellen. Es sei denn, es ändern sich des Öteren etwas oder es gibt noch
    zig andere Informationen auf dem PDF (Kopfzeile, Fußzeile, etc.), dann könnte eine .fdf tatsächlich einfacher sein.
  • Man kann aus einem PDF auch einfach ein neues PDF erstellen und an gewünschten Position dann einfach Text, Grafiken, Linien usw. hinzufügen.

    Allerdings muss man dann immer noch das Programm anpassen, wenn sich das PDF als Vorlage mal ändert.

    Evtl. könnte man auch die PDFAnnotation in dem PDFDocument untersuchen und schauen ob und wo sich ggf. PDFAnnotationTextWidgets befinden.
  • @MCDan:
    Wenn ich dich richtig verstehe.
    PDF Vorlage nehmen, in das System laden. Dort wo im PDF die Daten reinkommen sollen werden über mein "Drawtext" die Positionen angegeben und rein geschrieben?

    Dann die Frage, wie bekomme ich das PDF da rein?

    Versuche es gerade so, klappt jedoch nicht

    Quellcode

    1. -(void)pdf{
    2. CGRect PDFRect = CGRectMake(0, 0, 800, 800);//Testwerte
    3. NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Release_Notes" ofType: @"pdf"];
    4. NSData *pdfData = [NSData dataWithContentsOfFile: filePath];
    5. [pdfData drawinRect:PDFRect];
    6. }
    Alles anzeigen


    Als Fehlermeldung kommt: "No visible @interface for 'NSData' declares the selector 'drawInRect:'
    Wo ist mein Denkfehler?
    Intelligente Sätze zu verfassen ist gar nicht so einfach. Schon ein einziger Buchstabendreher kann den ganzen Text urinieren... :whistling:
  • Achso,
    nee hab ich noch nicht. Wurde gestern vom Dell-Mann aufgehalten.
    Dein Text klang jedoch, als müsste ich das PDF nur so reinladen wie bspw. das Bild.

    Ok, weiß ich bescheid :)
    Intelligente Sätze zu verfassen ist gar nicht so einfach. Schon ein einziger Buchstabendreher kann den ganzen Text urinieren... :whistling: