Maison  >  Article  >  développement back-end  >  Introduction détaillée à la création et au remplissage de champs dans PDF en utilisant C# (image et texte)

Introduction détaillée à la création et au remplissage de champs dans PDF en utilisant C# (image et texte)

黄舟
黄舟original
2017-03-31 15:05:531920parcourir

Cet article présente principalement les connaissances pertinentes de C# pour créer et remplir des champs en PDF. Il a une très bonne valeur de référence, jetons un coup d'œil avec l'éditeur ci-dessous

Comme nous le savons tous, les documents PDF ne peuvent généralement pas être édités ou modifiés. Si l'utilisateur doit signer ou remplir d'autres contenus dans le document PDF, le document PDF doit comporter des champs modifiables. Les développeurs sont souvent confrontés au besoin de remplir des données dans les champs du modèle PDF de manière par programmation . À ce stade, vous devez résoudre les deux questions suivantes :

  1. Comment créer des champs modifiables en PDF ?

  2. Comment remplir avec précision le contenu de ces champs ?

Ici, je vais vous présenter comment utiliser les composants C# et Free Spire.PDF pour réaliser cette fonction.

Spire.PDF gratuitPrésentation des composants

Spire.PDF gratuit est un composant PDF professionnel gratuit à utiliser dans les applications .NET Créer, modifier, traiter et lire des documents PDF. Prend en charge les opérations de traitement de documents PDF riches, telles que la fusion/scission de documents PDF, la conversion (telle que HTML en PDF, PDF en images, etc.), l'impression (y compris l'impression silencieuse), la compression, l'ajout de commentaires, les paramètres de sécurité (y compris les signatures numériques) , création et remplissage de champs, insertion et extraction d'images, extraction et surlignage de texte, etc. Ne dépend pas d'Adobe Acrobat et prend en charge le chinois.

Concernant l'installation, il existe de nombreux canaux, dont le site officiel et NuGet, la méthode la plus appréciée et la plus couramment utilisée par les développeurs. Entrez la commande PowerShell suivante dans la console NuGet Package Manager de Visual Studio et appuyez sur Entrée, la dll du composant sera automatiquement référencée dans le projet :

PM> Install-Package FreeSpire.PDF

Mise en place de la création et du remplissage des champs

1. Créer un domaine

Ce composant fournit de nombreuses classes correspondantes grâce auxquelles nous pouvons créer une variété de domaines PDF. Comme il existe de nombreux types, je répertorie uniquement certains champs communs et les noms de classe correspondant aux champs dans les composants.

ListBox

域名

类名

文本域

PdfTextBoxField

签名域

PdfSignatureField

复选框

PdfCheckBoxField

组合框

PdfComboBoxField

列表框

PdfListBoxField

按钮

PdfRadioButtonListField(单选按钮)

PdfButtonField (普通按钮)

Domaine nom
Nom de la classe
Champ de texte PdfTextBoxField
Champ de signature PdfSignatureField
Box PdfCheckBoxField
ComboBox PdfComboBoxField
PdfListBoxField
Bouton PdfRadioButtonListField (bouton radio)PdfButtonField (bouton normal)

Ici, je sélectionne les deux champs modifiables les plus courants dans les documents PDF à introduire : les champs de texte et les champs de signature.

1.1 Champ de texte

Tout d'abord, j'ai créé un champ de texte simple. Vous devez spécifier le nom du champ lors de la création. L'avantage est que s'il y a plusieurs champs de texte dans le document en même temps, lorsque nous remplissons les champs par programme, nous pouvons remplir le contenu rapidement et avec précision. le champ spécifié en fonction du nom du champ dans le domaine. Il est à noter que le nom de domaine ne doit pas être répété, sinon le contenu sera renseigné dans tous les champs correspondant au nom de domaine.

//创建PDF文档
PdfDocument pdf = new PdfDocument();
//添加一个新页面
PdfPageBase page = pdf.Pages.Add(PdfPageSize.A4, new PdfMargins());
//添加文本到页面
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 10f), true);
page.Canvas.DrawString("年龄:", font, PdfBrushes.DeepSkyBlue, 10, 50);
//创建文本域并指定文本域的名称
PdfTextBoxField textbox = new PdfTextBoxField(page, "Age");  
//设置文本域的大小、位置、字体
textbox.Bounds = new RectangleF(40, 50, 50, 12);  
textbox.Font = font;
//添加文本域到文档
pdf.Form.Fields.Add(textbox);
//保存文档
pdf.SaveToFile("Fields.pdf");

Introduction détaillée à la création et au remplissage de champs dans PDF en utilisant C# (image et texte)

Bien sûr, la plupart du temps, nos besoins peuvent non seulement être de créer un simple champ de texte, mais également de définir d'autres paramètres, tels que le réglage bordures, couleurs d’arrière-plan et couleurs de police, disposition des polices. Même le contenu d'un champ de texte spécifié, par exemple uniquement des dates ou des nombres compris dans une certaine plage, peut être saisi.

Définissez le format :

//设置边框
textbox.BorderWidth = 0.75f;
textbox.BorderStyle = PdfBorderStyle.Solid;
textbox.BorderColor = Color.Black;
//设置背景色
textbox.BackColor = Color.Yellow;
//设置字体颜色
textbox.ForeColor = Color.Red;
//设置字体排列方式 
textbox.TextAlignment = PdfTextAlignment.Center;

Introduction détaillée à la création et au remplissage de champs dans PDF en utilisant C# (image et texte)

Spécifiez le contenu de saisie du champ de texte :

Adobe Acrobat aide les développeurs à utiliser Javascript pour prédéfinir le format, le type, etc. du contenu de saisie des champs de texte. Ce composant prend également en charge ce type de script et fournit les méthodes correspondantes pour implémenter ces fonctions. Le tableau suivant répertorie certains Javascript et méthodes :

//指定输入数据在1-100之间
string js = PdfJavascript.GetRangeValidateString(true, 1, true, 100);
PdfJavascriptAction jsAction = new PdfJavascriptAction(js);
textbox.Actions.Validate = jsAction;
Date

描述

示例

Javascript

方法

Date

01/31/2008

AFDate_FormatEx("mm/dd/yyyy");
     AFDate_KeystrokeEx("mm/dd/yyyy");

GetDateFormatString("mm/dd/yyyy");
     GetDateKeystrokeString("mm/dd/yyyy");

Date

1/31/2008

AFDate_FormatEx("m/d/yyyy");
     AFDate_KeystrokeEx("m/d/yyyy");

GetDateFormatString("m/d/yyyy");
     GetDateKeystrokeString("m/d/yyyy");

Zip code

12345

AFSpecial_Format(0);
     AFSpecial_Keystroke(0);

GetSpecialFormatString(0);
     GetSpecialKeystrokeString(0);

Zip 4

12345-1234

AFSpecial_Format(1);
     AFSpecial_Keystroke(1);

GetSpecialFormatString(1);
     GetSpecialKeystrokeString(1);

Phone number

(123) 456-7890

AFSpecial_Format(2);
     AFSpecial_Keystroke(2);

GetSpecialFormatString(2);
     GetSpecialKeystrokeString(2);

Money

,345.00
       -,345.00

AFNumber_Format(2, 0, 0, 0,   "$", true);
     AFNumber_Keystroke(2, 0, 0, 0, "$", true);

GetNumberFormatString(2, 0,   0, 0, "$", true);
     GetNumberKeystrokeString(2, 0, 0, 0, "$", true);

Validate

1≤input value≤10

AFRange_Validate(true,1,true,10)

GetRangeValidateString(true,   1, true, 10);

Description

Exemple Javascript


Méthode
Introduction détaillée à la création et au remplissage de champs dans PDF en utilisant C# (image et texte)31/01/2008

AFDate_FormatEx("mm/jj/aaaa"); AFDate_KeystrokeEx("mm/jj/aaaa");

GetDateFormatString("mm/jj/aaaa"); GetDateKeyStringString("mm/jj/aaaa");

Date

31/01/2008

AFDate_FormatEx("m/d/aaaa");
AFDate_KeystrokeEx("m/j/aaaa");

//创建签名域并指定域名
PdfSignatureField signaturefield = new PdfSignatureField(page, "Signature");
//设置域的边框
signaturefield.BorderWidth = 1.0f;
signaturefield.BorderStyle = PdfBorderStyle.Solid;
signaturefield.BorderColor = new PdfRGBColor(System.Drawing.Color.Black);
//设置高亮模式
signaturefield.HighlightMode = PdfHighlightMode.Outline;
//设置大小与位置
signaturefield.Bounds = new RectangleF(40, 150, 200, 100);
//将签名域添加到页面
pdf.Form.Fields.Add(signaturefield);
GetDateFormatString("m/j/aaaa");

GetDateKeyStringString("m/d/yyyy");Introduction détaillée à la création et au remplissage de champs dans PDF en utilisant C# (image et texte)

Code postal

12345 AFSpecial_Format(0);

AFSpecial_KeyString(0);

GetSpecialFormatString(0);
GetSpecialKeyString(0);

//加载PDF文档
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("Fields.pdf");
//获取第一页
PdfPageBase page = pdf.Pages[0];
//获取文档的所有域
PdfFormWidget form = pdf.Form as PdfFormWidget;
//填充第一个文本域
PdfTextBoxFieldWidget textboxField = form.FieldsWidget[0] as PdfTextBoxFieldWidget;
textboxField.Text = "25";
//填充第二个签名域
PdfSignatureFieldWidget signatureField = form.FieldsWidget[1] as PdfSignatureFieldWidget;
String pfxPath = @"gary.pfx";
PdfCertificate digi = new PdfCertificate(pfxPath, "123456");   
PdfSignature signature = new PdfSignature(pdf, page, digi, "demo", signatureField);
signature.IsTag = true;
signature.DigitalSigner = "Gary";
signature.ConfigGraphicType = ConfiguerGraphicType.TextSignInformation;
//保存文档
pdf.SaveToFile("Fill.pdf");
Zip 4

Introduction détaillée à la création et au remplissage de champs dans PDF en utilisant C# (image et texte)12345-1234 AFSpecial_Format(1); AFSpecial_KeyString(1); GetSpecialFormatString(1); GetSpecialKeyString(1);
Numéro de téléphone (123) 456-7890 AFSpecial_Format(2); AFSpecial_KeyString(2); GetSpecialFormatString(2); GetSpecialKeyString(2);
Argent 12 345,00 $ -12 345,00 $ AFNumber_Format(2, 0, 0, 0, "$", vrai); AFNumber_KeyString(2, 0, 0, 0, "$", true); GetNumberFormatString(2, 0, 0, 0, "$", true); GetNumberKeystrokeString(2, 0, 0, 0, "$", true);
Valider 1≤valeur d'entrée≤10 AFRange_Validate(true,1,true,10) GetRangeValidateString(true, 1, true , 10);
Exemple : 1.2 Champ de signatureLa création d'un champ de signature est similaire à un champ de texte Vous pouvez également définir la bordure, taille et position du champ. Attendez les attributs. Je n’entrerai pas dans les détails ici. 2. Remplir les champs Vous devez obtenir le document. d'abord lorsque vous remplissez les champs, tous les champs du champ, puis remplissez les champs spécifiés un par un. S'il existe plusieurs domaines du même type, vous pouvez rapidement renseigner les noms de domaine.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn