6

PDFSharp を使用して、フィールドが入力された PDF ドキュメントを生成しています。ドキュメントを保存するときは、読み取り専用、別名フラット化したいと考えています。以下を試してみましたが、Adobe で PDF を開くと、フィールドは編集可能です。

   using (PdfDocument form = PdfReader.Open(outputFormLocation , PdfDocumentOpenMode.Modify))
        {
            //do stuff...
            //Save
            PdfSecuritySettings securitySettings = form.SecuritySettings;
            securitySettings.PermitFormsFill = false;
            securitySettings.PermitModifyDocument = false;
            securitySettings.PermitPrint = true;

            form.Save(outputFormLocation);
4

4 に答える 4

3

すべてのフィールドの ReadOnly プロパティを設定すると、PdfSharp 1.32、PdfSharp.Pdf.AcroForms を使用して機能します (これは、質問が投稿された時点では利用できなかった可能性があります)。例えば:

PdfDocument document = PdfReader.Open("file.pdf", PdfDocumentOpenMode.Modify);
PdfAcroForm form = document.AcroForm;
PdfAcroField.PdfAcroFieldCollection fields = form.Fields;
string[] names = fields.Names;

for (int idx = 0; idx < names.Length; idx++)
{
    string fqName = names[idx];
    PdfAcroField field = fields[fqName];
    PdfTextField txtField;

    if ((txtField = field as PdfTextField) != null)
    {
        txtField.ReadOnly = true;
    }
}
document.Save("file.pdf");
于 2014-11-19T03:08:46.540 に答える
1

PDFsharp 1.32に対するuozuAhoの回答に適合し、テキストフィールドだけでなくすべてのフィールドをロックするように変更しました。

PdfDocument document = PdfReader.Open("file.pdf", PdfDocumentOpenMode.Modify);
PdfAcroForm form = document.AcroForm;
string[] names = form.Fields.Names;
for (int idx = 0; idx < names.Length; idx++)
{
    string fqName = names[idx];
    PdfAcroField field = form.Fields[fqName];
    field.ReadOnly = true;
}
document.Save("file.pdf");
于 2016-09-07T13:39:03.010 に答える
1

以前、ドキュメントを読み取り専用にするために、このプロパティ (以下を参照) を使用しました。

securitySettings.PermitAccessibilityExtractContent = false;
securitySettings.PermitAnnotations = false;
securitySettings.PermitAssembleDocument = false;
securitySettings.PermitExtractContent = false;
securitySettings.PermitFormsFill = true;
securitySettings.PermitFullQualityPrint = false;
securitySettings.PermitModifyDocument = true;
securitySettings.PermitPrint = false;
于 2013-10-09T19:18:24.743 に答える