On one hand it says that the document was not modified but on the other it say "3 miscellaneous changes" but no indication of a second revision. As usual, the Acrobat documentation is useless.
I don't need to show any logo in signature. But I get "3 miscellaneous changes" in "modifications list" in Acrobat Reader.
You must go to Signatures->Signature Properties->Document and in Section "Modifications" press button "Compute Modifications List".
Pls hlp....
I don't need to show any logo in signature. But I get "3 miscellaneous changes" in "modifications list" in Acrobat Reader.
Code of PDFSigner here:
using System;
using System.IO;
using System.Collections;
using org.bouncycastle.pkcs;
using org.bouncycastle.crypto;
using org.bouncycastle.x509;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace PDFSignerNS
{
/// <summary>
/// Signs PDF documents with a certificate (PFX)
/// </summary>
public class PDFSigner
{
/// <summary>
/// Stores pfx certificate
/// </summary>
protected PKCS12Store pk12 = null;
protected X509Certificate[] chain;
protected AsymmetricKeyParameter akp;
public string Reason = "";
public string Location = "";
/// <summary>
/// Loads pfx certificate from file into certificate collection
/// </summary>
/// <param name="pfxFileName">pfx file</param>
/// <param name="pfxPassword">password</param>
public void LoadPFXCert(string pfxFileName, string pfxPassword)
{
pk12 = new PKCS12Store(
new FileStream(
pfxFileName,
FileMode.Open,
FileAccess.Read),
pfxPassword.ToCharArray());
IEnumerator i = pk12.aliases();
string alias = "";
while (i.MoveNext())
{
alias = ((string)i.Current);
if (pk12.isKeyEntry(alias))
break;
}
akp = pk12.getKey(alias).getKey();
X509CertificateEntry[] ce = pk12.getCertificateChain(alias);
chain = new X509Certificate[ce.Length];
for (int k = 0; k < ce.Length; ++k)
chain[k] = ce[k].getCertificate();
}
What's mean miscellaneous changes in pdf files?
I sign a pdf with itext.
On one hand it says that the document was not modified but on the other it say "3 miscellaneous changes" but no indication of a second revision. As usual, the Acrobat documentation is useless.
I don't need to show any logo in signature. But I get "3 miscellaneous changes" in "modifications list" in Acrobat Reader.
link to my PDF for inspection:
http://www.itbcg.pl/Wyciag.pdf
You must go to Signatures->Signature Properties->Document and in Section "Modifications" press button "Compute Modifications List".
Pls hlp....
I don't need to show any logo in signature. But I get "3 miscellaneous changes" in "modifications list" in Acrobat Reader.
Code of PDFSigner here:
using System;
using System.IO;
using System.Collections;
using org.bouncycastle.pkcs;
using org.bouncycastle.crypto;
using org.bouncycastle.x509;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace PDFSignerNS
{
/// <summary>
/// Signs PDF documents with a certificate (PFX)
/// </summary>
public class PDFSigner
{
/// <summary>
/// Stores pfx certificate
/// </summary>
protected PKCS12Store pk12 = null;
protected X509Certificate[] chain;
protected AsymmetricKeyParameter akp;
public string Reason = "";
public string Location = "";
/// <summary>
/// Loads pfx certificate from file into certificate collection
/// </summary>
/// <param name="pfxFileName">pfx file</param>
/// <param name="pfxPassword">password</param>
public void LoadPFXCert(string pfxFileName, string pfxPassword)
{
pk12 = new PKCS12Store(
new FileStream(
pfxFileName,
FileMode.Open,
FileAccess.Read),
pfxPassword.ToCharArray());
IEnumerator i = pk12.aliases();
string alias = "";
while (i.MoveNext())
{
alias = ((string)i.Current);
if (pk12.isKeyEntry(alias))
break;
}
akp = pk12.getKey(alias).getKey();
X509CertificateEntry[] ce = pk12.getCertificateChain(alias);
chain = new X509Certificate[ce.Length];
for (int k = 0; k < ce.Length; ++k)
chain[k] = ce[k].getCertificate();
}
/// <summary>
/// Signs pdf document
/// </summary>
/// <param name="plainPdfStream"></param>
/// <param name="signPdfStream"></param>
public void SignPFD(Stream plainPdfStream, Stream signPdfStream)
{
PdfReader reader = new PdfReader(plainPdfStream);
PdfStamper stamper = PdfStamper.CreateSignature(reader,
signPdfStream, '\0');
SignPFDInternal(stamper, pk12 as PKCS12Store);
stamper.Close();
}
protected void SignPFDInternal(PdfStamper st, PKCS12Store pk12)
{
PdfSignatureAppearance sap = st.SignatureAppearance;
sap.SetCrypto(akp, chain, null,
PdfSignatureAppearance.WINCER_SIGNED);
sap.Reason = Reason;
sap.Location = Location;
sap.SetVisibleSignature(new Rectangle(100, 100, 200, 200), 1,
null);
}
}
}