Java 自签名无法解析或不是字段

Java 自签名无法解析或不是字段,java,android,pdf,itext,sign,Java,Android,Pdf,Itext,Sign,当我尝试使用itext创建一个对pdf文件签名的android应用程序时,我遇到了以下错误: 自签名无法解析或不是字段 错误在第32行 sap.setCrypto(key,(java.security.cert.Certificate[])链,null,PdfSignatureAppearance.SELF_-SIGNED) 下面是代码: public class Sign_pdf { static String fname = "C:\\Ressource\\test.pdf" ; sta

当我尝试使用itext创建一个对pdf文件签名的android应用程序时,我遇到了以下错误:

自签名无法解析或不是字段

错误在第32行

sap.setCrypto(key,(java.security.cert.Certificate[])链,null,PdfSignatureAppearance.SELF_-SIGNED)

下面是代码:

public class Sign_pdf {

static String fname  = "C:\\Ressource\\test.pdf" ;
static String fnameS = "C:\\Ressource\\test1_sign.pdf" ;

public static final boolean signPdf()
        throws IOException, DocumentException, Exception
{
    // Vous devez preciser ici le chemin d'acces a votre clef pkcs12
    String fileKey          = "C:\\Ressource\\Nacer_Heithem.p12" ;
    // et ici sa "passPhrase"
    String fileKeyPassword  = "123456" ;

    try {
        // Creation d'un KeyStore
        KeyStore ks = KeyStore.getInstance("pkcs12");
        // Chargement du certificat p12 dans el magasin
        ks.load(new FileInputStream(fileKey), fileKeyPassword.toCharArray());
        String alias = (String)ks.aliases().nextElement();
        // Recupération de la clef privée
        PrivateKey key = (PrivateKey)ks.getKey(alias, fileKeyPassword.toCharArray());
        // et de la chaine de certificats
        Certificate[] chain = (Certificate[]) ks.getCertificateChain(alias);

        // Lecture du document source
        PdfReader pdfReader = new PdfReader((new File(fname)).getAbsolutePath());
        File outputFile = new File(fnameS);
        // Creation du tampon de signature
        PdfStamper pdfStamper;
        pdfStamper = PdfStamper.createSignature(pdfReader, null, '\0', outputFile);
        PdfSignatureAppearance sap = pdfStamper.getSignatureAppearance();
        sap.setCrypto(key, (java.security.cert.Certificate[]) chain, null, PdfSignatureAppearance.SELF_SIGNED);
        sap.setReason("Test SignPDF berthou.mc");
        sap.setLocation("");
        // Position du tampon sur la page (ici en bas a gauche page 1)
        sap.setVisibleSignature(new Rectangle(10, 10, 50, 30), 1, "sign_rbl");

        pdfStamper.setFormFlattening(true);
        pdfStamper.close();

        return true;
    }
    catch (Exception key) {
        throw new Exception(key);
    }
}

您使用哪个iText版本?您好,我使用iText-2.1.7解决了这个问题,但是我可以告诉我如何将文件放入emulator中,以便在fname(第3行)和filekey(第10行)等应用程序中使用它吗?自我签名的已被弃用。看一看Bruno Lowagie(iText软件)为当前API编写的白皮书。我建议不要使用旧的2.1.x iText版本,因为它们是。。。真的很老了。