Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void main(String[] args) throws IOException, TransformerException
- {
- String file = "resultPath/PDFA-x-y.PDF";
- String fontfile = "ressource/LiberationSans-Regular.ttf";
- PDDocument doc = new PDDocument();
- try
- {
- PDPage page = new PDPage();
- doc.addPage(page);
- doc.setVersion(1.7f);
- PDFont font = PDType0Font.load(doc, new File(fontfile));
- if (!font.isEmbedded())
- {
- throw new IllegalStateException("PDF/A compliance requires that all fonts used for"
- + " text rendering in rendering modes other than rendering mode 3 are embedded.");
- }
- // create a page with the image "PDF_Page_image with PDRender"
- PDPageContentStream contents = new PDPageContentStream(doc, page);
- try
- {
- SeekableStream in = new FileSeekableStream("src/pageImage.jpg");
- JPEGDecodeParam jpegParam = new JPEGDecodeParam();
- ImageDecoder decoder = ImageCodec.createImageDecoder("jpeg", in, jpegParam);
- PlanarImage pi = new NullOpImage
- (decoder.decodeAsRenderedImage(0),null,null,OpImage.OP_IO_BOUND);
- BufferedImage imagePage = pi.getAsBufferedImage() ;
- PDImageXObject pdfXOImage = LosslessFactory.createFromImage(doc, imagePage);
- contents.drawImage(pdfXOImage, 0,0, page.getMediaBox().getWidth(), page.getMediaBox().getHeight());
- contents.close();
- }catch (Exception e) {
- // TODO: handle exception
- }
- // add XMP metadata
- XMPMetadata xmp = XMPMetadata.createXMPMetadata();
- PDDocumentCatalog catalogue = doc.getDocumentCatalog();
- try
- {
- DublinCoreSchema dc = xmp.createAndAddDublinCoreSchema();
- dc.setTitle(file);
- dc.addCreator(Constante.APPLICATION);
- PDFAIdentificationSchema id = xmp.createAndAddPFAIdentificationSchema();
- id.setPart(3);
- id.setConformance("A");
- XmpSerializer serializer = new XmpSerializer();
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- serializer.serialize(xmp, baos, true);
- PDMetadata metadata = new PDMetadata(doc);
- metadata.importXMPMetadata(baos.toByteArray());
- catalogue.setMetadata(metadata);
- }
- catch(BadFieldValueException e)
- {
- // won't happen here, as the provided value is valid
- throw new IllegalArgumentException(e);
- }
- // sRGB output intent
- InputStream colorProfile = CreatePDFA.class.getResourceAsStream(
- "../../../pdmodel/sRGB.icc");
- PDOutputIntent intent = new PDOutputIntent(doc, colorProfile);
- intent.setInfo("sRGB IEC61966-2.1");
- intent.setOutputCondition("sRGB IEC61966-2.1");
- intent.setOutputConditionIdentifier("sRGB IEC61966-2.1");
- intent.setRegistryName("http://www.color.org");
- catalogue.addOutputIntent(intent);
- catalogue.setLanguage("en-US");
- PDViewerPreferences pdViewer =new PDViewerPreferences(page.getCOSObject());
- pdViewer.setDisplayDocTitle(true);;
- catalogue.setViewerPreferences(pdViewer);
- PDMarkInfo mak = new PDMarkInfo();
- PDStructureTreeRoot treeRoot = new PDStructureTreeRoot();
- catalogue.setMarkInfo(mak);
- catalogue.setStructureTreeRoot(treeRoot);
- catalogue.getMarkInfo().setMarked(true);
- PDDocumentInformation info = doc.getDocumentInformation();
- Calendar cal = Calendar.getInstance();
- info.setCreationDate(cal);
- info.setModificationDate(cal);
- info.setAuthor(Constante.AUTEUR);
- info.setProducer(Constante.APPLICATION);;
- // info.setCreator(Constante.APPLICATION);
- info.setTitle("titlePDF");
- info.setSubject("Imag to PDF");
- doc.save(file);
- }catch (Exception e) {
- throw new IllegalArgumentException(e);
- }
- }
Add Comment
Please, Sign In to add comment