iText — заполнить форму XFA, содержащую действия JavaScript

Моя цель - заполнить интерактивную форму PDF xfa с помощью iText. Все работает нормально, но, к сожалению, в некоторых полях есть действия JavaScript, и я не могу заполнить их с помощью метода fillXfaForm(). Мои вопросы: как это сделать программно (на Java)? Это вообще возможно?

Я могу сделать это вручную с помощью инструмента импорта Adobe Reader с включенным JS.

Вот ссылка на форму в формате PDF: http://www.finanse.mf.gov.pl/documents/766655/1481810/PIT-40%2820%29_v1-0E_2014.pdf

мой код:

public class Pit40DocumentMerger {

    public static final String PDF_FORM         = "resources/pit40.pdf";
    public static final String XML_SOURCE       = "resources/xml_file.xml";
    public static final String PDF_RESULT       = "resources/result.pdf";

    public static void main(String[] args) throws IOException, DocumentException, ParserConfigurationException, SAXException, TransformerFactoryConfigurationError, TransformerException {

        Pit40DocumentMerger pit40 = new Pit40DocumentMerger();
        pit40.fillPdfWithXmlData(PDF_FORM, XML_SOURCE, PDF_RESULT);
    }

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

            PdfReader.unethicalreading = true;
            PdfReader reader = new PdfReader(src);
            PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
            AcroFields form = stamper.getAcroFields();
            XfaForm xfa = form.getXfa();
            xfa.fillXfaForm(new FileInputStream(xml));
            stamper.close();
            reader.close();
        }


}

ресурсы/xml_file.xml:

<?xml version="1.0" encoding="UTF-8"?>
<xfa:data xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
    <Deklaracja xmlns="http://crd.gov.pl/wzor/2014/12/12/1921/" xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2011/06/21/eD/DefinicjeTypy/">
        <Naglowek>
            <KodFormularza kodPodatku="PIT" kodSystemowy="PIT-40 (20)" rodzajZobowiazania="Z" wersjaSchemy="1-0E">PIT-40</KodFormularza>
            <WariantFormularza>20</WariantFormularza>
            <CelZlozenia poz="P_6">1</CelZlozenia>
            <Rok>2014</Rok>
            <KodUrzedu>0402</KodUrzedu>
        </Naglowek>
        <Podmiot1 rola="Płatnik">
            <etd:OsobaNiefizyczna>
                <etd:NIP>9999999999</etd:NIP>
                <etd:PelnaNazwa>MyCompanyName</etd:PelnaNazwa>
                <etd:REGON>23123123112312</etd:REGON>
            </etd:OsobaNiefizyczna>
        </Podmiot1>
        <Podmiot2 rola="Podatnik">
            <etd:OsobaFizyczna>
                <etd:PESEL>99121308372</etd:PESEL>
                <etd:ImiePierwsze>NAME</etd:ImiePierwsze>
                <etd:Nazwisko>SURNAME</etd:Nazwisko>
                <etd:DataUrodzenia>2015-03-12</etd:DataUrodzenia>
            </etd:OsobaFizyczna>
            <etd:AdresZamieszkania rodzajAdresu="RAD">
                <etd:AdresPol>
                    <etd:KodKraju>PL</etd:KodKraju>
                    <etd:Wojewodztwo>WOJEWODZTWO</etd:Wojewodztwo>
                    <etd:Powiat>POWIAT</etd:Powiat>
                    <etd:Gmina>GMINA</etd:Gmina>
                    <etd:Ulica>ULICA</etd:Ulica>
                    <etd:NrDomu>3</etd:NrDomu>
                    <etd:NrLokalu>24</etd:NrLokalu>
                    <etd:Miejscowosc>MIEJSCOWOSC</etd:Miejscowosc>
                    <etd:KodPocztowy>55-555</etd:KodPocztowy>
                    <etd:Poczta>POCZTA</etd:Poczta>
                </etd:AdresPol>
            </etd:AdresZamieszkania>
        </Podmiot2>
        <PozycjeSzczegolowe>
            <P_24>3</P_24>
            <P_25>50000.00</P_25>
            <P_27>50000.00</P_27>
            <P_28>2000</P_28>
            <P_31/>
            <P_32/>
            <P_33/>
            <P_34/>
            <P_35/>
            <P_36/>
            <P_37/>
            <P_38/>
            <P_39/>
            <P_40/>
            <P_42/>
            <P_43/>
            <P_44/>
            <P_45/>
            <P_46/>
            <P_49/>
            <P_51/>
            <P_52/>
            <P_53>50000.00</P_53>
            <P_54>0.00</P_54>
            <P_55>50000.00</P_55>
            <P_56>2000</P_56>
            <P_57/>
            <P_60/>
            <P_61/>
            <P_62>50000</P_62>
            <P_63>8443.98</P_63>
            <P_65>8443.98</P_65>
            <P_71>8444</P_71>
            <P_72>6444</P_72>
        </PozycjeSzczegolowe>
        <Pouczenie>Za uchybienie obowiązkom płatnika grozi odpowiedzialność przewidziana w Kodeksie karnym skarbowym.</Pouczenie>
        <Zalaczniki/>
    </Deklaracja>
</xfa:data>

person mkuligowski    schedule 03.04.2015    source источник


Ответы (1)


Линия

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

следует изменить на

PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest), '\0', true);

как указывает эта информация.

person foxer    schedule 27.05.2015
comment
Я не уверен, что это поможет вам. - person Ranch Camal; 20.12.2018