2016-08-02 3 views
0

Ich habe mit PDFSharp gearbeitet, um PDFs mit AcroForm-Feldern auszufüllen. Ich bin in der Lage, den Wert der Formularfelder festlegen, indem Sie einen Code ähnlich wie dies mit:Die Schriftart in einem AcroForm-Feld kann nicht mit PDFSharp geändert werden

PdfTextField txtField = (PdfTextField)oldPDF.AcroForm.Fields["fieldname"]; 
    txtField.Value = new PdfString("my form value"); 

Das Problem, das ich habe, ist, wenn ich versuche, die Schriftart für den Text zu ändern, der in das Feld gehen. Ich bin die Schriftart-Eigenschaft des Feldes zugreifen können, und es lässt mich es so gesetzt:

txtField.Font = new XFont("Courier New", 16, XFontStyle.Bold); 

Allerdings, wenn ich die gespeicherte PDF öffnen, wird standardmäßig die Schriftart zurück in eine andere Schriftart. Ich habe versucht, andere Schriftarten, wie "Arial" oder "Helvetica" und verschiedene Größen zu verwenden, aber nichts scheint zu bleiben.

Interessant auch, wenn ich die PDF-Datei öffnen, bevor ich Änderungen daran mit Foxit PhantomPDF machen kann ich das Formularfeld inspizieren und sehen die Schriftart Times New Roman gesetzt

enter image description here

Nachdem ich die füllen PDF und speichern Sie es, dann schauen Sie sich die Felder an und es zeigt Helvetica 10 an, egal welche Schriftart ich in meinem Code einstellen möchte.

enter image description here

Wenn ich das Formularfeld mit Foxit PhantomPDF manuell bearbeiten und die Schriftart, die Art und Weise ändern, wird es bleiben, aber ich will es in Code zu tun. Ist das möglich?

Antwort

0

Nicht sicher, ob dies der richtige Weg ist, aber ich bin in der Lage, die Schriftart zu ändern, indem Sie auf das Standard-Apprance-Element "/ DA" im AcroForm-Feldwörterbuch zugreifen und es ändern.

if(txtField.Elements.ContainsKey("/DA") == false) 
     { 
     txtField.Elements.Add("/DA", new PdfString("/CoBo 12 Tf 0 g")); 
     } 
    else 
     { 
     txtField.Elements["/DA"] = new PdfString("/CoBo 12 Tf 0 g"); 
     } 

I wie die „Font“ Eigenschaft fühlen würde, der richtige Weg, dies zu tun, aber ich kann nicht diese Methode zu arbeiten.

Verwandte Themen