Java 如何在尝试打开pdf时获得弹出窗口

Java 如何在尝试打开pdf时获得弹出窗口,java,itext7,Java,Itext7,我试图得到一个弹出窗口,pdf是过期的,如果它的创建日期早于一些固定的天数。我正在获取弹出窗口,但在打开pdf之后。 我想要的和pdf在实际打开pdf之前要求输入密码时一样 public class ValidateExpirationPDF { public static final String DEST = "./resources/GlobalSRG_Homepage_deycpted.pdf"; public static final String SRC = "./resources

我试图得到一个弹出窗口,pdf是过期的,如果它的创建日期早于一些固定的天数。我正在获取弹出窗口,但在打开pdf之后。 我想要的和pdf在实际打开pdf之前要求输入密码时一样

public class ValidateExpirationPDF {
public static final String DEST = "./resources/GlobalSRG_Homepage_deycpted.pdf";
public static final String SRC = "./resources/GlobalSRG_Homepage.pdf";

public static void main(String[] args) throws Exception {
    File file = new File(DEST);
    file.getParentFile().mkdirs();
    new ValidateExpirationPDF().validatePdf(DEST);
}

protected void validatePdf(String dest) throws Exception {
    PdfReader reader = new PdfReader(SRC);
    PdfWriter writer = new PdfWriter(DEST, new WriterProperties());
    PdfDocument pdfDoc = new PdfDocument(reader, writer);

    String fileCreationDate = "05-18-2018 17:10:10"; //dummy date
    PdfPage page = pdfDoc.getFirstPage();


if(!validatePdfExpiration(fileCreationDate)) {          
    page.setAdditionalAction(PdfName.O,PdfAction.createJavaScript("var nButton = app.alert({cMsg: 'This PDF Document has been Expired.',cTitle: 'GXG Alert',nIcon: 1, nType: 0 });"
        + "var flag=nButton;"
        + "if (flag == 1) app.execMenuItem('Close');"
        + ""
        + ""));
}else{
    //System.out.println("OUTside :"+validateExpiryDate(fileCreationDate)); 
}

pdfDoc.close();
}


public boolean validatePdfExpiration(String fileCreationDate) throws Exception {

    Boolean validFlag=false;

    Calendar fileCreationCalendar = Calendar.getInstance();
    fileCreationCalendar.set(2018, 4, 14, 19, 10,10);  //testing purpose set datecalendar.set(year, month, date, hourOfDay, minute, second);
    fileCreationCalendar.add(Calendar.DAY_OF_YEAR,50);
    Date expiryDate = fileCreationCalendar.getTime();

    Calendar currentCalendar = Calendar.getInstance();
    Date currentDate = currentCalendar.getTime();

     if(currentDate.before(expiryDate) ||currentDate.equals(expiryDate)) {
         System.out.println("This PDF Document has not been Expired. \n TODAY DATE\t:"+currentDate+"\n"+"EXPIRY DATE\t:"+expiryDate);
         validFlag=true;
        }else{
            System.out.println("This PDF Document has been Expired. \n TODAY DATE\t:"+currentDate+"\n"+"EXPIRY DATE\t:"+expiryDate);
             validFlag=false;
        }

     return validFlag;
}
} 

很抱歉,建议在未完全阅读代码的情况下进行编辑,请忽略重新设置。如果要在打开PDF之前更改行为,则必须更改PDF查看器,而不是PDF文档。@mkl关于受密码保护的PDF,在打开PDF之前会出现弹出窗口吗?取决于“打开”的含义。pdf查看器已经打开了该文件,否则它不会知道它需要密码。也就是说,这是在早期完成的唯一测试,您控制的所有其他测试都会在很久以后进行。correct@mkl不需要询问密码,而是希望在计算的基础上显示一些消息。当它询问弹出窗口后面的密码时,我们看不到pdf的任何内容,但当我使用上述代码时,我们可以看到弹出窗口上面的pdf内容,这就是问题所在。