2017-07-28 2 views
-2

Ich habe eine PDF erstellt mit iutxtsharp, die einige bearbeitbare Felder enthält, wenn der Service aufgerufen wird, wird die PDF erstellt. Aber das Problem, dem ich gegenüberstehe, ist, wenn ich irgendetwas in der pdf-Datei ändere und es dann herunterlade, werden die Änderungen nicht gespeichert. Auch ich möchte die pdf in einem neuen Vorsprung durch Serverseite öffnen.Speichern geänderter Daten in pdf itextsharp

-Code, was ich bin mit ist:

public static String[] LANGUAGES_gc = { "English", "Math", "Science" }; 
    [HttpGet] 
    [ODataRoute("GetPdf")] 
    public void DownloadPDF() 
    { 
     HttpContext.Current.Response.ContentType = "application/pdf"; 
     HttpContext.Current.Response.AddHeader("content-disposition", "inline;filename=Example.pdf"); 
     HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); 

     Document doc = new Document(iTextSharp.text.PageSize.A4, 10f, 10f, 100f, 0f); 
     string pdfFilePath = HttpContext.Current.Server.MapPath(".") + "/PDFFiles"; 
     PdfWriter wri = PdfWriter.GetInstance(doc, HttpContext.Current.Response.OutputStream); 
     doc.Open(); 
     doc.AddAuthor("Test author"); 
     doc.AddCreationDate(); 
     PdfContentByte cb = wri.DirectContent; 
     Font _bf = new Font(Font.FontFamily.HELVETICA, 6); 
     PdfFormField _radioGroup = PdfFormField.CreateRadioButton(wri, true); 
     _radioGroup.FieldName = "language_gc"; 
     Rectangle _rect; 
     RadioCheckField _radioG; 
     PdfFormField _radioField1; 
     PdfFormField field; 
     for (int i = 0; i < LANGUAGES_gc.Length; i++) 
     { 
      _rect = new Rectangle(46, 806 - i * 40, 60, 788 - i * 40); 
      _radioG = new RadioCheckField(wri, _rect, null, LANGUAGES_gc[i]); 
      _radioG.BackgroundColor = new GrayColor(0.8f); 
      _radioG.BorderColor = GrayColor.BLACK; 
      _radioG.CheckType = RadioCheckField.TYPE_CIRCLE; 
      _radioField1 = _radioG.RadioField; 
      _radioGroup.AddKid(_radioField1);    

      ColumnText.ShowTextAligned(cb, Element.ALIGN_LEFT, new Phrase(LANGUAGES_gc[i], new Font(Font.FontFamily.HELVETICA, 18)), 70, 790 - i * 40, 0); 
     } 
     /* Button */ 
     _rect = new Rectangle(300, 806, 370, 788); 
     PushbuttonField button = new PushbuttonField(wri, _rect, "Buttons"); 
     button.BackgroundColor = new GrayColor(0.75f); 
     button.BorderColor = GrayColor.GRAYBLACK; 
     button.BorderWidth = 1; 
     button.BorderStyle = PdfBorderDictionary.STYLE_BEVELED; 
     button.TextColor = GrayColor.GRAYBLACK ; 
     button.FontSize = 12; 
     button.Text = "Submit"; 
     //button.Layout = PushbuttonField.LAYOUT_ICON_LEFT_LABEL_RIGHT; 
     button.ScaleIcon = PushbuttonField.SCALE_ICON_ALWAYS; 
     button.ProportionalIcon = true; 
     button.IconHorizontalAdjustment = 0; 

     field = button.Field; 
     field.Action = PdfAction.JavaScript("this.showButtonState()", wri); 
     wri.AddAnnotation(field); 

    //} 
    //return ms.ToArray(); 
     /*----------------------------------------------------*/ 
     wri.AddAnnotation(_radioGroup); 
     wri.AddAnnotation(button.Field); 
     cb = wri.DirectContent; 
     doc.Close(); 
     HttpContext.Current.Response.Write(doc); 
     HttpContext.Current.Response.End(); 
    } 

Kann mir jemand die Lösung vorschlagen ??

Antwort

1

Lassen Sie uns hier eine Analogie mit einem einfacheren Dateityp machen. Angenommen, Sie zeigen dem Benutzer eine Textdatei an. Sie öffnen es in ihrer nativen .txt-App (Notepad) und nehmen einige Änderungen vor.

Erwarten Sie, dass ihre Änderungen automatisch an Ihren Server übermittelt werden? Oder dass ihre Änderungen magisch propagiert werden? Natürlich nicht. Und selbst wenn dies der Fall wäre, scheint dies Funktionalität zu bieten, die Notepad bereitstellen müsste, anstatt etwas, was der Ersteller der Datei tun sollte.

Jetzt gibt es einen bestimmten Standard von PDF-Dokumenten, der genau für Ihren Anwendungsfall existiert. Im Wesentlichen stellt das Dokument eine Verbindung zu einem Server her und synchronisiert sie. Allerdings ist dieser Standard eher unklar, nicht viele Zuschauer unterstützen ihn.

Soweit ich weiß, unterstützt keine PDF-Bibliothek (einschließlich iText) die Erstellung solcher Dokumente.

Verwandte Themen