添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
try { PdfReader reader = new PdfReader(filePath); AcroFields acroFields = reader.getAcroFields(); for (String fieldName : acroFields.getSignatureNames()) { PdfDictionary signatureDict = acroFields.getSignatureDictionary(fieldName); PdfName subFilter = signatureDict.getAsName(PdfName.SUBFILTER); if (subFilter != null && subFilter.equals(PdfName.ADBE_PKCS7_DETACHED)) { PdfString appearanceStreamRef = signatureDict.getAsString(PdfName.AP); if (appearanceStreamRef != null) { PRIndirectReference ref = (PRIndirectReference) PdfReader.getPdfObject(appearanceStreamRef); PdfStream appearanceStream = (PdfStream) PdfReader.getPdfObject(ref); byte[] content = PdfReader.getStreamBytes(appearanceStream); FileOutputStream fos = new FileOutputStream("path/to/output.png"); fos.write(content); fos.close(); reader.close(); } catch (IOException | DocumentException e) { e.printStackTrace(); import com.itextpdf.text.pdf.*; import java.io.FileOutputStream; import java.io.IOException; public class PdfSignatureExample { public static void main(String[] args) { String filePath = "path/to/signed_document.pdf"; try { PdfReader reader = new PdfReader(filePath); AcroFields acroFields = reader.getAcroFields(); for (String fieldName : acroFields.getSignatureNames()) { PdfDictionary signatureDict = acroFields.getSignatureDictionary(fieldName); PdfName subFilter = signatureDict.getAsName(PdfName.SUBFILTER); if (subFilter != null && subFilter.equals(PdfName.ADBE_PKCS7_DETACHED)) { PdfString appearanceStreamRef = signatureDict.getAsString(PdfName.AP); if (appearanceStreamRef != null) { PRIndirectReference ref = (PRIndirectReference) PdfReader.getPdfObject(appearanceStreamRef); PdfStream appearanceStream = (PdfStream) PdfReader.getPdfObject(ref); byte[] content = PdfReader.getStreamBytes(appearanceStream); FileOutputStream fos = new FileOutputStream("path/to/output.png"); fos.write(content); fos.close(); reader.close(); } catch (IOException | DocumentException e) { e.printStackTrace();
import com.itextpdf.kernel.pdf.PdfDictionary;
import com.itextpdf.kernel.pdf.PdfName;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class PdfSignatureExample {
    public static void main(String[] args) {
        String filePath = "path/to/signed_document.pdf";
        try {
            PdfReader reader = new PdfReader(filePath);
            PdfDocument document = new PdfDocument(reader);
            for (int i = 1; i <= document.getNumberOfPages(); i++) {
                PdfDictionary pageDict = document.getPage(i).getPdfObject();
                PdfDictionary annotsDict = pageDict.getAsDictionary(PdfName.Annots);
                if (annotsDict != null) {
                    for (int j = 0; j < annotsDict.size(); j++) {
                        PdfDictionary annotDict = annotsDict.getAsDictionary(j + 1);
                        PdfName subtype = annotDict.getAsName(PdfName.Subtype);
                        if (subtype != null && subtype.equals(PdfName.Widget)) {
                            PdfDictionary apDict = annotDict.getAsDictionary(PdfName.AP);
                            if (apDict != null) {
                                PdfStream nStream = apDict.getAsStream(PdfName.N);
                                if (nStream != null) {
                                    byte[] content = nStream.getBytes();
                                    FileOutputStream fos = new FileOutputStream("path/to/output.png");
                                    fos.write(content);
                                    fos.close();
            document.close();
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();