Hi Again

I found and experienced that the conversion of an existing PDF to a PDF A 
complaint ones is merely impossible (or very hard and long process to do so) 
and still I found that the problem is with the PDF Schema values when the newly 
added metadata values are not matching with them.
I further found that it is quite possible to read a PDF and edit the PDF Schema 
meta data. So I tried reading the existing PDF to an existing PdfCopy, add 
metadata to it, and then forward it to the convertPdfA() method which is stated 
in my below mail.
But still it doesn't work. (Assume that the file1 is the existing PDF and the 
file2 is the PDFA complaint file which is the output)

      PdfReader reader = new PdfReader(new 
RandomAccessFileOrArray(file1.getPath()), null);
      PdfStamper stamper = new PdfStamper(reader, new 
FileOutputStream(newFile));
      HashMap info = reader.getInfo();
      info.put("Subject", "Report Executor");
      info.put("Author", "Report building logic");
      info.put("Keywords", "PDF/A compliant");
      info.put("Title", "Report");
      info.put("Creator", "Application reporting");
      stamper.setMoreInfo(info);
      ByteArrayOutputStream baos = new ByteArrayOutputStream();
      XmpWriter xmp = new XmpWriter(baos, info);
      xmp.close();
      stamper.setXmpMetadata(baos.toByteArray());
      stamper.close();

(I call this method before calling the convertToPdfA method, and then it will 
return file1 with modified PDF document information)

In my already existing PDF (which is to be converted to PDFA), only the 
following metadata are there.
(When executed - reader.getInfo() )
[0]          "Type => Info"
[1]          "Producer => null"

My PDF which was converted to PDFA from my convertToPdfA method compliance to 
PDFA/1b correctly when I removed the title, keywords and subject fields from 
the PDF information.
(Removed code)

//document.addTitle(reader.getInfo().get("Title").toString());

//document.addKeywords(reader.getInfo().get("Keywords").toString());

//document.addSubject(reader.getInfo().get("Subject").toString());

So it confirms that the above three properties are not existing in PDF 
dictionary values, and if anyhow we can add those values to the already created 
PDF and then pass it to conversion, it should work.
How can I change my approach? As this is not working for me, do you have any 
more suggestions?
Is that enough to update only the PDF Schema like this and then use my 
convertToPdfA method given below?

Thank you in advance.
-Manulak Dissanayake

From: Manulak Dissanayake [mailto:manulak.dissanay...@ifsworld.com]
Sent: Thursday, August 23, 2012 4:38 PM
To: fop-users@xmlgraphics.apache.org
Subject: Problem with the PDFA1B compliance


Hi All



I am creating a PDF which is supposed to be complaint with PDF/A1-b and when I 
use online validators like PDF TOOLS Online 
Validator<http://www.pdf-tools.com/pdf/validate-pdfa-online.aspx>, it gives the 
following error saying that the PDF is not PDF/A complaint.



dc:description/*[0] :: Missing language qualifier.

dc:title/*[0] :: Missing language qualifier.

The property 'pdf:keywords' is not defined in schema 'Adobe PDF Schema'.

The XMP property 'dc:title' is not synchronized with the document information 
entry 'Title'.

The XMP property 'dc:description' is not synchronized with the document 
information entry 'Subject'.

The required XMP property 'pdf:Keywords' for the document information entry 
'Keywords' is missing.



I am using FOP for rendering my PDF and using iText (iText 2.1.6 by 1T3XT) for 
converting the PDF to be PDF/A complaint.



public void convertToPdfA(File file1, File file2)

{

PdfReader reader = null;

Document document = null;

PdfCopy copy;



       InputStream PROFILE = 
this.getClass().getClassLoader().getResourceAsStream("com/ini/vldt/config/sRGB 
Color Space Profile.icm");



There I first read the PDF file to a PdfReader object, then get a copy as 
follows.



reader = new PdfReader(new RandomAccessFileOrArray(file1.getPath()),null);

              //Creating a new document that has the existing page size

              document = new Document(reader.getPageSizeWithRotation(1));

              //save the data in the 'document' to file2

              copy = new PdfCopy(document, new FileOutputStream(file2));



Then I try adding the Title, Author, Keywords, Creator, Subject, Creation Date 
and Producer as follows.



try{

document.addTitle(reader.getInfo().get("Title").toString());

}

catch(Exception e){

document.addTitle("TEST Title");

}



try{

document.addAuthor(reader.getInfo().get("Author").toString());

}

catch(Exception e){

document.addAuthor("TEST Author");

}



try{

document.addKeywords(reader.getInfo().get("Keywords").toString());

}

catch(Exception e){

document.addKeywords("TEST Keywords");

}



document.addCreator("TEST Creator");

document.addCreationDate();

document.addProducer();



try{

document.addSubject(reader.getInfo().get("Subject").toString());

       }

catch(Exception e){

document.addSubject("TEST Subject");

}





Then I give the PDFA conformance values and then create the PDF as follows.



copy.setPDFXConformance(PdfCopy.PDFA1B);

copy.setPdfVersion(PdfCopy.VERSION_1_4);

document.open();

ICC_Profile icc = ICC_Profile.getInstance(PROFILE);

copy.setOutputIntents("Custom", "", "http://www.color.org";, "sRGB 
IEC61966-2.1", icc);



for(int i=1;i<=reader.getNumberOfPages();i++){

document.setPageSize(reader.getPageSizeWithRotation(i));

copy.addPage(copy.getImportedPage(reader, i));

}

copy.createXmpMetadata();

copy.close();

document.close();

reader.close();





I got another error report from 
SolidFrameowrk<http://www.validatepdfa.com/online.htm> validations as follows.


- <metadata>
  <problem severity="error" objectID="27" clause="6.7" standard="pdfa">Language 
qualifier missing for property 'dc:description'</problem>
  <problem severity="error" objectID="27" clause="6.7" standard="pdfa">Language 
qualifier missing for property 'dc:title'</problem>
  <problem severity="error" objectID="27" clause="TN0003" 
standard="pdfa">Property 'pdf:keywords' shall use a custom embedded 
schema</problem>
  <problem severity="error" objectID="27" clause="6.7.3" 
standard="pdfa">Document information entry 'Keywords' not synchronized with 
metadata property 'pdf:Keywords'</problem>
 </metadata>
- <fonts>
  <problem severity="error" objectID="12" clause="6.3.5" 
standard="pdfa">Missing or incorrect CIDSet for CIDFont subset</problem>
  <problem severity="error" objectID="18" clause="6.3.5" 
standard="pdfa">Missing or incorrect CIDSet for CIDFont subset</problem>
 </fonts>

What can be the issue? Any reply is highly appreciated.

Thank  you.
-Manulak Dissanayake



------------------------------------------------------------------------------



CONFIDENTIALITY AND DISCLAIMER NOTICE



This e-mail, including any attachments, is confidential and for use only by

the intended recipient. If you are not the intended recipient, please notify

us immediately and delete this e-mail from your system. Any use or disclosure

of the information contained herein is strictly prohibited. As internet

communications are not secure, we do not accept legal responsibility for the

contents of this message nor responsibility for any change made to this

message after it was sent by the original sender. We advise you to carry out

your own virus check as we cannot accept liability for damage resulting from

software viruses.



------------------------------------------------------------------------------

CONFIDENTIALITY AND DISCLAIMER NOTICE

This e-mail, including any attachments, is confidential and for use only by
the intended recipient. If you are not the intended recipient, please notify
us immediately and delete this e-mail from your system. Any use or disclosure
of the information contained herein is strictly prohibited. As internet
communications are not secure, we do not accept legal responsibility for the
contents of this message nor responsibility for any change made to this
message after it was sent by the original sender. We advise you to carry out
your own virus check as we cannot accept liability for damage resulting from
software viruses.

Reply via email to