Ich verwende itextsharp 5.5, um die Feldwerte mehrerer nicht berechneter Felder in einer PDF-Datei festzulegen. Die PDF enthält auch berechnete Werte. Ich möchte die berechneten Werte berechnen lassen und dann alle Felder schreibgeschützt machen, damit Benutzer, die das PDF öffnen, die Werte nicht mehr bearbeiten können.Behalten Sie die aktuell berechneten Werte beim Reduzieren von pdf
Ich habe es geschafft, die berechneten Werte erhalten
pdfStamper.JavaScript = "this.calculateNow();";
verwenden, aber dies lässt die editierbaren Felder aus. Verwenden
pdfStamper.FormFlattening = true;
macht die Felder schreibgeschützt, aber die berechneten Werte werden wieder entfernt. Auch wenn ich nur kalkuliere, das PDF als temporäre Datei speichere, die temporäre Datei öffne und mit FormFlattening wieder auf true speichere, dann hat das fertige PDF die berechneten Werte nicht mehr.
Interessanterweise, wenn ich FormFlattening auf false gesetzt und beinhalten nicht die Linie pdfReader.RemoveUsageRights();
die resultierende pdf den Fehler „Dieses Dokument gibt aktivierter erweiterte Funktionen in Adobe Reader. Das Dokument geändert wurde, da es erstellt wurde und die Verwendung erweiterter Funktionen ist nicht mehr verfügbar ", wenn sie in Adobe Reader geöffnet wird. Nach dem Schließen dieser Fehlermeldung sieht die PDF-Datei jedoch korrekt aus, die berechneten Felder sind gefüllt und das Dokument ist schreibgeschützt. Aber da die resultierenden pdfs verteilt werden müssen, ist es keine Lösung, wenn sie alle Fehlermeldungen ausgeben.
Also meine Frage ist, gibt es eine Möglichkeit, FormFlattening zu verwenden, während Sie behalten, was die aktuell berechneten Werte von Feldern sind? Gibt es eine andere Möglichkeit, die Felder schreibgeschützt zu machen? Ist das Verhalten, wenn ich RemoveUsagerRights nicht verwende, etwas, das ich verwenden kann, oder sind die Felder aufgrund des Fehlers nur nicht editierbar?