itext7 generation pdfA - 1B validation problem

340 Views Asked by At

I am using itext7 in java to create a 1-B PdfA using this simple code:

import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.pdf.PdfAConformanceLevel;
import com.itextpdf.kernel.pdf.PdfDocumentInfo;
import com.itextpdf.kernel.pdf.PdfOutputIntent;
import com.itextpdf.kernel.pdf.PdfString;
import com.itextpdf.kernel.pdf.PdfViewerPreferences;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.xmp.PdfConst;
import com.itextpdf.kernel.xmp.XMPConst;
import com.itextpdf.kernel.xmp.XMPException;
import com.itextpdf.kernel.xmp.XMPMeta;
import com.itextpdf.kernel.xmp.XMPMetaFactory;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.pdfa.PdfADocument;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import gestionepdf.PdfDocument_Configurazione_Text;

/**
 *
 * @author UC9001309
 */
public class TestCreatePDFA {

public static final String courier = "C:\\Windows\\fonts\\couri.ttf";
public static final String times = "C:\\Windows\\fonts\\times.ttf";
public static final String helvetica = "C:\\Windows\\fonts\\helvetica.ttf";

    public static void main(String[] args) throws FileNotFoundException, IOException, XMPException {
        // TODO code application logic here
         PdfWriter   pdfWriter = new PdfWriter("C:\\Temp\\" + new SimpleDateFormat("yyyyMMddHHmmss").format(new java.util.Date()) + ".pdf");
        
         
          PdfADocument pdfA = new PdfADocument( pdfWriter,PdfAConformanceLevel.PDF_A_1B,new PdfOutputIntent("Custom", "", "https://www.color.org",
            "sRGB2014", new FileInputStream("C:\\Users\\UC9001309\\Documents\\NetBeansProjects\\GestionePdf\\sRGB2014.icc")));  
              
        Document document = new Document(pdfA, PageSize.A4, false);
         
        XMPMeta meta = XMPMetaFactory.create();         
         
        PdfDocumentInfo info = pdfA.getDocumentInfo();
        
        pdfA.getCatalog().setViewerPreferences(new PdfViewerPreferences().setDisplayDocTitle(true));
                
        pdfA.getCatalog().setLang(new PdfString("it-IT"));     
        
        info.addCreationDate();         
        meta.setProperty(XMPConst.NS_XMP, PdfConst.CreateDate, info.getMoreInfo("CreationDate"));        
        info.addModDate();
        meta.setProperty(XMPConst.NS_XMP, PdfConst.ModifyDate, info.getMoreInfo("ModDate"));         
        info.setAuthor("MyAuthor");                
        info.setCreator("MyCreator");
        info.setProducer("Producer");
        info.setTitle("TEST PdfA " ); 
        
        PdfFont font_h = PdfFontFactory.createFont(helvetica);
        PdfFont font_c = PdfFontFactory.createFont(courier);
        PdfFont font_t = PdfFontFactory.createFont(times);
        
        
        
         Paragraph p = new Paragraph();
         p.setFont(font_c);
         p.setItalic();
         p.add("Prova pdfa");
         p.getAccessibilityProperties().setRole("P");
         
         Paragraph p1 = new Paragraph();
         p1.setFont(font_h);      
         p1.add("Prova pdfa");
         p1.getAccessibilityProperties().setRole("P");
         
         Paragraph p2 = new Paragraph();
         p2.setFont(font_t);      
         p2.add("Prova pdfa");
         p2.getAccessibilityProperties().setRole("P");
         
         document.add(p);
         document.add(p1);
         document.add(p2);
         pdfA.setXmpMetadata(meta);
         document.close();      
          
      
    }    
}

But if I try to validate, using online sites some are fine with others not. In particular, a validator gives me this error :

<?xml version="1.0" encoding="UTF-8"?>
-<ValidationReport>
<VersionInformation Version="14.1.182" ID="GdPicture.NET.14"/>
<ValidationProfile Level="B" Part="1" Conformance="PDF/A"/>
<FileInfo FileSize="57849 bytes" FileName="20220726115840.pdf"/>
<ValidationResult Statement="PDF file is not compliant with validation profile requirements." sCompliant="False"/>
-<Details>
-<FailedChecks Count="4">
-<Check ID="InconsistentPDFInfo" OccurenceCount="4">
<Occurence Statement="The PDF Information Dictionary entry CreationDate is not consistent with PDF XMP metadata information." ObjReference="None" Context="Document"/>
<Occurence Statement="The PDF Information Dictionary entry Creator is not consistent with PDF XMP metadata information." ObjReference="None" Context="Document"/>
<Occurence Statement="The PDF Information Dictionary entry ModDate is not consistent with PDF XMP metadata information." ObjReference="None" Context="Document"/>
<Occurence Statement="The PDF Information Dictionary entry Producer is not consistent with PDF XMP metadata information." ObjReference="None" Context="Document"/>
</Check>
</FailedChecks>
</Details>
</ValidationReport>

This is xmp of my pdfa :

<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.1.0-jc003">
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <rdf:Description rdf:about=""
        xmlns:xmp="http://ns.adobe.com/xap/1.0/"
        xmlns:dc="http://purl.org/dc/elements/1.1/"
        xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
        xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/"
      xmp:CreateDate="2022-07-26T16:13:07+02:00"
      xmp:ModifyDate="2022-07-26T16:13:07+02:00"
      xmp:CreatorTool="MyCreator"
      pdf:Producer="Producer; modified using iText® Core 7.2.2 (AGPL version) ©2000-2022 iText Group NV"
      pdfaid:part="1"
      pdfaid:conformance="B">
      <dc:creator>
        <rdf:Seq>
          <rdf:li>MyAuthor</rdf:li>
        </rdf:Seq>
      </dc:creator>
      <dc:title>
        <rdf:Alt>
          <rdf:li xml:lang="x-default">TEST PdfA </rdf:li>
        </rdf:Alt>
      </dc:title>
    </rdf:Description>
  </rdf:RDF>
</x:xmpmeta>
                                

This is the dictionary :

Author - MyAuthor
CreationDate - D:20220727094440+02'00'
Creator - MyCreator
ModDate - D:20220727094440+02'00'
Producer - Producer
Title - TEST PdfA 

I don't understand if I'm wrong or the validator?

Thanks in advance for anyone who wants to help !

0

There are 0 best solutions below