Ajouter l'image de la signature dans le fichier PDF sans signature numérique à l'aide de iTextSharp
Je suis en utilisant iTextSharp de travailler avec des fichiers Pdf. Je veux ajouter l'image de la signature de la Signature de champ sans la signature numérique du document (sans aucune intervention de certificat).
Est-il possible? Je suis en mesure de travailler avec la signature numérique, mais j'ai aussi envie d'ajouter simplement l'image de la signature sur le champ de signature sans aucune utilisation de certificats.
Mise à JOUR:
Écrire maintenant j'ai le code suivant.
//Set PDF Reader and PDF Stamper
PdfReader reader = new PdfReader(sourceDocument);
//File stream where PDF will write
FileStream fout = new FileStream(destinationPath, FileMode.Create, FileAccess.ReadWrite);
PdfStamper stamper = PdfStamper.CreateSignature(reader, fout, '//Set PDF Reader and PDF Stamper
PdfReader reader = new PdfReader(sourceDocument);
//File stream where PDF will write
FileStream fout = new FileStream(destinationPath, FileMode.Create, FileAccess.ReadWrite);
PdfStamper stamper = PdfStamper.CreateSignature(reader, fout, '\0', null, true);
//Set PDF Appearance
PdfSignatureAppearance appearance = stamper.SignatureAppearance;
iTextSharp.text.Image signatureFieldImage = iTextSharp.text.Image.GetInstance(image, System.Drawing.Imaging.ImageFormat.Png);
appearance.SignatureGraphic = signatureFieldImage;
appearance.SignatureRenderingMode = PdfSignatureAppearance.RenderingMode.GRAPHIC;
appearance.SetVisibleSignature(signatureFieldName);
stamper.Close();
reader.Close();
fout.Close();
', null, true);
//Set PDF Appearance
PdfSignatureAppearance appearance = stamper.SignatureAppearance;
iTextSharp.text.Image signatureFieldImage = iTextSharp.text.Image.GetInstance(image, System.Drawing.Imaging.ImageFormat.Png);
appearance.SignatureGraphic = signatureFieldImage;
appearance.SignatureRenderingMode = PdfSignatureAppearance.RenderingMode.GRAPHIC;
appearance.SetVisibleSignature(signatureFieldName);
stamper.Close();
reader.Close();
fout.Close();
Mais quand j'essaie de le lancer, il donne l'erreur suivante:
Signature défini. Doit être fermé PdfSignatureAppearance
Après l'ajout d'un aspect de la signature de champ, le champ de signature est toujours affichée (dans l'onglet signature) est inutilisée. Est-ce possible pour vous?
Oui, ce sera OK. Je veux juste montrer l'image de la signature dans l'un des cas.
veuillez consulter les mises à jour de poste.
Comme je vois, @Bruno déjà répondu à votre question de manière appropriée.
Grâce mkl et Bruno. La réponse de Bruno a travaillé pour moi.
Oui, ce sera OK. Je veux juste montrer l'image de la signature dans l'un des cas.
veuillez consulter les mises à jour de poste.
Comme je vois, @Bruno déjà répondu à votre question de manière appropriée.
Grâce mkl et Bruno. La réponse de Bruno a travaillé pour moi.
OriginalL'auteur rizzz86 | 2013-12-18
Vous devez vous connecter pour publier un commentaire.
Vous êtes à l'aide de code pour signer numériquement un document PDF que vous ne voulez pas signer numériquement 😉
Si le document est déjà signé, l'ajout de contenu supplémentaire (comme une image) rompre la signature, mais si le document n'était pas encore signé, vous disposez de différentes options.
Vous devez utiliser
PdfStamper
la façon normale, c'est: non à l'aide de laCreateSignature()
méthode, mais la façon dont c'est décrit dans chapitre 6 de mon livre sur la bibliothèque iText. Vous avez également besoin de décider si oui ou non il est important que (1) l'image fait partie de la zone de signature (dans ce cas, il disparaît lorsque la PDF est en fait signé) ou (2) l'image doit être ajouté comme partie du flux de contenu (dans ce cas, il sera toujours là lorsque vous vous enregistrez le document).En cas de (1), veuillez jeter un oeil à l'exemple de code 2.6 et exemple de code 2.7 de mon livre sur les signatures numériques (voir la CreateEmptyField exemple pour le C# version du code). Dans l'exemple de code 2.6, vous allez apprendre à créer un
PdfFormField
avec une coutumePdfAppearance
. Dans l'exemple de code 2.7, vous avez appris comment ajouter un champ de signature à un document existant à l'aide dePdfStamper
. Dans votre cas, il fallait retirer le champ de signature (à l'aide de laremoveField()
méthode) et de le remplacer par un nouveauPdfFormField
avec une apparence différente, aux mêmes coordonnées.En cas de (2), il vous suffit de créer un
Image
objet et l'ajouter à laPdfContentByte
récupérées à partir de laPdfStamper
à l'aide de laGetOverContent()
méthode. Voir la les exemples du chapitre 6 pour l'inspiration.Dans les deux cas, vous avez besoin de connaître les coordonnées et le numéro de page dans les deux cas. Cette information peut être récupérée comme ceci:
Vous obtiendrez la page comme ceci:
f.page
et unRectangle
la définition de la position comme ceci:f.position
.Que nous ne savons pas exactement quel type de résultat final dont vous avez besoin, il est difficile d'aller dans le détail. Le plus important d'erreur dans votre code que vous utilisez le
CreateSignature()
méthode pour obtenir unPdfStamper
objet alors que vous ne voulez pas signer le document.Dans votre cas, il fallait retirer le champ de signature (à l'aide de la removeField() la méthode) et de la remplacer - si quelqu'un fait qui, s'il vous plaît être prudent; si votre signature originale champ porte des paramètres spéciaux, par exemple verrou de dictionnaires ou de graines de valeurs, il suffit de remplacer le champ de disposer de cette information. Vous devez également copier les références en question.
Je ne suis pas en supprimant le champ de signature, mais qui cache à l'aide de FLAGS_HIDDEN annotation. Je veux que le champ de signature nom plus tard.
OriginalL'auteur Bruno Lowagie
C'est de cette façon-je ajouter une signature non signée champ
OriginalL'auteur Nader Khazai