Hi Elyes, Thanks for your contribution.
I just have one side question. Did you validate your PDF/A with other validators than preflight ? KR, Guillaume On Fri, Apr 12, 2013 at 11:30 AM, Timo Boehme <timo.boe...@ontochem.com>wrote: > Dear Elyes, > > thank you for the contribution. Could you please open an improvement issue > with the code attached here: > https://issues.apache.org/**jira/browse/PDFBOX<https://issues.apache.org/jira/browse/PDFBOX> > . > > Thanks, > Timo > > Am 12.04.2013 10:41, schrieb Elyes Lehtihet: > > Hello, >> First of all, thanks for this tool, found it very useful. >> Below some sample code to include (sRGB) ICC profile and corresponding >> OutputIntents to the generated PDF/A. The produced PDF successfully >> passes validation. >> It would be nice to have the COSName' extension included in the next >> release so we won't have to use a homemade build. >> Regards, >> Elyes >> >> ---- >> >> * Extension in COSName (org.apache.pdfbox.cos) >> >> public static final COSName OutputIntents = new COSName( "OutputIntents" >> ); >> public static final COSName OutputIntent = new COSName( "OutputIntent" ); >> public static final COSName DestOutputProfile = new COSName( >> "DestOutputProfile" ); >> >> >> * Add new classes >> >> public class OutputIntents implements COSObjectable { >> private COSDictionary dictionary; >> public OutputIntents(PDDocument doc, InputStream colorProfile) throws >> Exception{ >> dictionary = new COSDictionary(); >> dictionary.setItem(COSName.**TYPE, COSName.OutputIntent); >> dictionary.setItem(COSName.S, COSName.GTS_PDFA1); >> >> /* Here you have to download .icc profile */ >> InputStream is = >> OutputIntents.class.**getResourceAsStream("/test/**color/sRGB.icc"); >> >> DestOutputProfile dop = new DestOutputProfile(doc,is, false); >> >> dop.configure(); >> >> dictionary.setItem(COSName.**DestOutputProfile, dop); >> >> } >> >> public COSBase getCOSObject() { >> return dictionary; >> } >> public COSDictionary getDictionary() >> { >> return dictionary; >> } >> >> public void setInfo( String value ) >> { >> dictionary.setString("Info", value); >> } >> >> public void setOutputCondition( String value ) >> { >> dictionary.setString("**OutputCondition", value); >> } >> >> public void setOutputConditionIdentifier( String value ) >> { >> dictionary.setString("**OutputConditionIdentifier", value); >> } >> >> public void setRegistryName( String value ) >> { >> dictionary.setString("**RegistryName", value); >> } >> >> } >> >> public class DestOutputProfile extends PDStream { >> >> public DestOutputProfile(PDDocument document) { >> super(document); >> } >> >> public DestOutputProfile(COSStream str) { >> super(str); >> } >> >> public DestOutputProfile(PDDocument doc, InputStream str) >> throws IOException { >> super(doc, str); >> } >> >> public DestOutputProfile(PDDocument doc, InputStream str, boolean >> filtered) >> throws IOException { >> super(doc, str, filtered); >> } >> >> public void configure(){ >> try { >> getStream().setFilters(**COSName.FLATE_DECODE); >> getStream().setInt( COSName.LENGTH, getByteArray().length ); >> getStream().setInt(COSName.N, 3); >> addCompression(); >> } >> catch (Exception e) { >> e.printStackTrace(); >> System.exit(-1); >> } >> } >> } >> >> >> * Sample code to include output intent >> PDDocumentCatalog cat = doc.getDocumentCatalog(); >> COSDictionary root = (COSDictionary)cat.**getCOSObject(); >> OutputIntents oi = new OutputIntents(doc, colorProfile); >> oi.setInfo("sRGB IEC61966-2.1"); >> oi.setOutputCondition("sRGB IEC61966-2.1"); >> oi.**setOutputConditionIdentifier("**sRGB IEC61966-2.1"); >> oi.setRegistryName("http://**www.color.org <http://www.color.org>"); >> >> COSArray outputIntents = new COSArray(); >> outputIntents.add(oi); >> >> root.setItem("OutputIntents", outputIntents); >> >> > > -- > > Timo Boehme > OntoChem GmbH > H.-Damerow-Str. 4 > 06120 Halle/Saale > T: +49 345 4780474 > F: +49 345 4780471 > timo.boe...@ontochem.com > > ______________________________**______________________________**_________ > > OntoChem GmbH > Geschäftsführer: Dr. Lutz Weber > Sitz: Halle / Saale > Registergericht: Stendal > Registernummer: HRB 215461 > ______________________________**______________________________**_________ > >