iText 5 PdfAction.javaScript () не работает в Adobe Acrobat после добавления PushbuttonField - PullRequest
1 голос
/ 14 октября 2019
  • Здесь я делаю добавление кнопки в файл PDF , используя iText (v - 5.5.13) и Java 8 .
  • С помощью этой кнопки я устанавливаю действие для Button, которое является одним предупреждением JavaScript
  • Кнопка успешно добавлена, но действие кнопки не вызывается при нажатии кнопки в PDF, означает Предупреждение JavaScript являетсяне работает .
  • Если я добавлю removeXfa() в AcroFields, тогда это работает, но проверка поля формы PDF не работает, поэтому я не могу удалить XFA
  • Похоже, это не работает в Adobe Acrobat , но в Foxit Reader это прекрасно работает
  • На самом деле я хочу вызов API вместо оповещения, но здесь оповещения неcall

Вот мой код на 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'
}


1 Ответ

0 голосов
/ 14 октября 2019

Убедитесь, что в вашей установке Adobe включен «Включить Acrobat JavaScript».

Если у вас открыт проблемный файл, просто перейдите в Edit => Preferences => JavaScript и убедитесь, что отмечены правильные параметры. есть ..

...