Embedded PDF

 

PDF versions of annual tax documents may "electronically deliver" tax data by embedding FDX JSON in the PDF "custom properties".

Such PDF files are referred to as intelligent tax documents™.

As seen below, the tax document information in FDX-standard JSON format is included internally in the PDF file.

How to add FDX JSON to your PDF tax documents

Example Java code

See more details


import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;

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

public class PdfFdxJsonInjector {

    public void inject(
        String pdfInFilePath,
        String pdfOutFilePath,
        String fdxVersion,
        String fdxSoftwareId,
        String fdxJson
    ) throws IOException {

        try (
            PDDocument document = PDDocument.load( new File( pdfInFilePath ) );
        ) {

            // Inject custom properties
            PDDocumentInformation documentInformation = new PDDocumentInformation( );

            documentInformation.setCustomMetadataValue( "fdxJson", fdxJson );
            documentInformation.setCustomMetadataValue( "fdxVersion", fdxVersion );
            documentInformation.setCustomMetadataValue( "fdxSoftwareId", fdxSoftwareId );

            document.setDocumentInformation( documentInformation );

            document.save( new File( pdfOutFilePath ) );

        } catch ( Exception e ) {

            System.out.println( e.getMessage( ) );

        }

    }

}

How to read FDX JSON from PDF tax documents

Example Java code


import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;

import java.io.File;

public class PdfFdxJsonReader {

    private String fdxJson;
    private String fdxVersion;
    private String fdxSoftwareId;

    public String getFdxJson( ) {
        return fdxJson;
    }

    public String getFdxVersion( ) {
        return fdxVersion;
    }

    public String getFdxSoftwareId( ) {
        return fdxSoftwareId;
    }

    public void read( String pdfInFilePath ) {

        try (
            PDDocument document = PDDocument.load( new File( pdfInFilePath ) );
        ) {

            PDDocumentInformation info = document.getDocumentInformation( );
            if ( info == null ) {
                return;
            }

            this.fdxJson = info.getCustomMetadataValue( "fdxJson" );
            this.fdxVersion = info.getCustomMetadataValue( "fdxVersion" );
            this.fdxSoftwareId = info.getCustomMetadataValue( "fdxSoftwareId" );

        } catch ( Exception e ) {

            System.out.println( e.getMessage( ) );

        }

    }

}

© Copyright 2023. All Rights Reserved.