1. 除了引入itext7 的相关jar包以外,还需要相关jar包:bcpkix-jdk15to18-163.jar,bcprov-jdk15to18-163.jar (这两个一定要有,不然会报错,其他包看情况而定,参考链接里面JDK 1.5 - JDK 1.8)
2. 生成 .keystore 文件
参考:https://blog.csdn.net/u014386474/article/details/51996019 & https://blog.csdn.net/devil_bye/article/details/82759140
3. 1)把生成好的 keystore文件放入某个固定目录下面,我放到了D:\\cert\\下面
2)把bcprov-jdk15to18-163.jar文件放入 jdk/jre/lib/ext 目录下面
3) 配置安全属性文件,在 jdk/jre/lib/security 目录下有个 java.security 文件,如看到:
security.provider.1=sun.security.provider.Sun
security.provider.2=sun.security.rsa.SunRsaSign
插入新的提供者:
security.provider.3=org.bouncycastle.jce.provider.BouncyCastleProvider
如果不配置这一步,会报java.security.NoSuchProviderException: no such provider: BC 这个问题(应该是)
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.security.PrivateKey;
import java.security.cert.Certificate;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import com.itextpdf.io.image.ImageData;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.colors.DeviceRgb;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.xobject.PdfImageXObject;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Div;
import com.itextpdf.layout.element.Image;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.property.BackgroundImage;
import com.itextpdf.layout.property.Property;