ceTe Software Help Library for Java September - 2021
DynamicPDF Generator for Java / Programming with Generator for Java / PDF/UA (Universal Accessibility)
In This Topic
    PDF/UA (Universal Accessibility)
    In This Topic

    DynamicPDF Generator for Java can create PDF documents that are marked as PDF/UA compatible. The goal of the PDF/UA standard is for everyone to be able to independently access information contained within a PDF document.

    Rules to Follow for PDF/UA

    The following rules must be followed in order to make a Document PDF/UA compliant:

    Below sample code generates a PDF/UA compliant PDF document.

    [Java]
    // Create a PDF Document
    Document document = new Document();
    
    // Set the TagOptions to document
    TagOptions Tag = new TagOptions();
    document.setTag(Tag);
    
    // Create StructureElement objects and set Order etc.
    StructureElement structureDocument = new StructureElement(TagType.getDocument());
    StructureElement structureHeading = new StructureElement(TagType.getHeading());
    StructureElement structureForm = new StructureElement(TagType.getForm());
    structureHeading.setParent(structureDocument);
    structureForm.setParent(structureDocument);
    
    // Create AttributeObject objects with tag order and parents.
    AttributeObject attrObjLayout = new AttributeObject(AttributeOwner.LAYOUT);
    attrObjLayout.setPlacement(Placement.BLOCK);
    structureForm.getAttributeLists().add(attrObjLayout);
    
    StructureElement structureForm2 = new StructureElement(TagType.getForm());
    structureForm2.setParent(structureDocument);
    structureForm2.getAttributeLists().add(attrObjLayout);
    
    StructureElement structureParagraph = new StructureElement(TagType.getParagraph());
    structureParagraph.setParent(structureDocument);
    StructureElement structureParagraph2 = new StructureElement(TagType.getParagraph());
    structureParagraph2.setParent(structureDocument);
    
    // Set Document Language
    document.setLanguage("en-us");
    document.getViewerPreferences().setDisplayDocTitle(true);
    
    // Create a Page
    Page page = new Page();
    
    // Create a Label and set Tag
    Label lblEnterName = new Label("EnterName:", 0, 100, 100, 50);
    lblEnterName.setTag(structureParagraph);
    Label lblAge = new Label("Age:", 0, 200, 100, 50);
    lblAge.setTag(structureParagraph2);
    
    // Create a TextField and set Tag
    TextField txtField1 = new TextField("txt1", 100, 100, 100, 50);
    TextField txtField2 = new TextField("txt2", 100, 200, 100, 50);
    txtField1.setTag(structureForm);
    txtField2.setTag(structureForm2);
    
    // Create an OpenTypeFont object with Embed option and ToolTip
    OpenTypeFont font = new OpenTypeFont("times.ttf");
    font.setEmbed(true);
    font.setSubset(false);
    lblEnterName.setFont(font);
    lblAge.setFont(font);
    txtField1.setFont(font);
    txtField1.setToolTip("Name");
    txtField2.setFont(font);
    txtField2.setToolTip("age");
    
    // Add the Elements to the Page
    page.getElements().add(lblEnterName);
    page.getElements().add(txtField1);
    page.getElements().add(lblAge);
    page.getElements().add(txtField2);
    
    // Add Page to the Document
    document.getPages().add(page);
    
    // Create an Xmp Metadata
    XmpMetadata xmp = new XmpMetadata();
    
    // Create a PdfUASchema and add to XMP matadata
    PdfUASchema customSchema = new PdfUASchema();
    xmp.addSchema(customSchema);
    
    // Create DublinCoreSchema and set properties
    DublinCoreSchema dc = xmp.getDublinCore();
    dc.getTitle().addLang("en-us", "XMP");
    dc.getTitle().setDefault("Title Text");
    
    // Adding the XmpMatadata to the document
    document.setXmpMetadata(xmp);
    
    // Save the PDF document
    document.draw("[outputPath]/output.pdf");