gpt4 book ai didi

javascript - 添加 PushbuttonField 后,iText 5 PdfAction.javaScript() 在 Adob​​e Acrobat 中不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 09:20:31 25 4
gpt4 key购买 nike

  • 在这里,我正在使用 iText (v - 5.5.13)Java 8 添加按钮到 PDF 文件中
  • 使用此按钮,我将操作设置为作为一个 JavaScript 警报的按钮
  • 按钮添加成功,但当我单击 PDF 中的按钮时,未调用按钮的操作,这意味着 JavaScript 警报不起作用
  • 如果我将 removeXfa() 添加到 AcroFields,那么此功能可以工作,但 PDF 表单字段的验证不起作用,这就是我无法删除 XFA 的原因
  • 看起来这在 Adob​​e Acrobat 中不起作用,但在 Foxit Reader 中却完美运行
  • 实际上我想要API调用而不是alert,但是这里alerts不是调用

这是我的 Java 代码

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.GrayColor;
import com.itextpdf.text.pdf.PdfAction;
import com.itextpdf.text.pdf.PdfAnnotation;
import com.itextpdf.text.pdf.PdfFormField;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import com.itextpdf.text.pdf.PushbuttonField;

public class AddField {

public static final String SRC = "E:/projects/PDF_Manipulation/SRC/abc.pdf";
public static final String DEST = "E:/projects/PDF_Manipulation/DEST/abc-added-button.pdf";

public static void main(String[] args) throws DocumentException, IOException {
File file = new File(DEST);
file.getParentFile().mkdirs();
new AddField().manipulatePdf(SRC, DEST);
}

public void manipulatePdf(String src, String dest) throws DocumentException, IOException {

PdfReader reader = new PdfReader(src);
PdfReader.unethicalreading = true;
reader.removeUsageRights();

PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));

/* If I add removeXfa() to AcroFields then this working but validation of PDF form field is not working thats why i can't remove XFA */
/* final AcroFields formx = stamper.getAcroFields();
formx.removeXfa();
formx.setGenerateAppearances(true); */

PushbuttonField button = new PushbuttonField(stamper.getWriter(), new Rectangle(36, 700, 72, 730), "SAVE");
button.setText("SAVE");
button.setBackgroundColor(new GrayColor(0.75f));
button.setVisibility(PushbuttonField.VISIBLE_BUT_DOES_NOT_PRINT);

PdfFormField submit = button.getField();
Rectangle rect = new Rectangle(550, 5, 580, 20);
submit.setWidget(rect, PdfAnnotation.HIGHLIGHT_INVERT);

String exportPdfJavascript = "app.alert('Testing........')";
submit.setAction(PdfAction.javaScript(exportPdfJavascript, stamper.getWriter()));

stamper.addAnnotation(submit, 1);

stamper.close();
}
}

这是我的 build.gradle 文件


apply plugin: 'java-library'

repositories {
jcenter()
}

dependencies {
// https://mvnrepository.com/artifact/com.itextpdf/itext7-core
compile group: 'com.itextpdf', name: 'itextpdf', version: '5.5.13'

// https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk15on
compile group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: '1.52'

// https://mvnrepository.com/artifact/net.sf.dozer/dozer
compile group: 'net.sf.dozer', name: 'dozer', version: '5.5.1'

compile group: 'com', name: 'itextpdf', version: 'pdfxfa'
}


最佳答案

确保您安装的 Adob​​e 已启用“启用 Acrobat JavaScript”。

当您打开有问题的文件时,只需转到“编辑”=>“首选项”=>“JavaScript”,并确保在其中勾选了正确的选项。

关于javascript - 添加 PushbuttonField 后,iText 5 PdfAction.javaScript() 在 Adob​​e Acrobat 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58374230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com