Guest User

Untitled

a guest
Oct 18th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.02 KB | None | 0 0
  1. public static void main(String[] args) throws IOException, TransformerException
  2. {
  3.  
  4. String file = "resultPath/PDFA-x-y.PDF";
  5.  
  6. String fontfile = "ressource/LiberationSans-Regular.ttf";
  7.  
  8. PDDocument doc = new PDDocument();
  9. try
  10. {
  11. PDPage page = new PDPage();
  12. doc.addPage(page);
  13. doc.setVersion(1.7f);
  14.  
  15. PDFont font = PDType0Font.load(doc, new File(fontfile));
  16.  
  17. if (!font.isEmbedded())
  18. {
  19. throw new IllegalStateException("PDF/A compliance requires that all fonts used for"
  20. + " text rendering in rendering modes other than rendering mode 3 are embedded.");
  21. }
  22.  
  23. // create a page with the image "PDF_Page_image with PDRender"
  24. PDPageContentStream contents = new PDPageContentStream(doc, page);
  25. try
  26. {
  27. SeekableStream in = new FileSeekableStream("src/pageImage.jpg");
  28. JPEGDecodeParam jpegParam = new JPEGDecodeParam();
  29. ImageDecoder decoder = ImageCodec.createImageDecoder("jpeg", in, jpegParam);
  30. PlanarImage pi = new NullOpImage
  31. (decoder.decodeAsRenderedImage(0),null,null,OpImage.OP_IO_BOUND);
  32.  
  33. BufferedImage imagePage = pi.getAsBufferedImage() ;
  34.  
  35. PDImageXObject pdfXOImage = LosslessFactory.createFromImage(doc, imagePage);
  36. contents.drawImage(pdfXOImage, 0,0, page.getMediaBox().getWidth(), page.getMediaBox().getHeight());
  37. contents.close();
  38. }catch (Exception e) {
  39. // TODO: handle exception
  40. }
  41.  
  42. // add XMP metadata
  43. XMPMetadata xmp = XMPMetadata.createXMPMetadata();
  44. PDDocumentCatalog catalogue = doc.getDocumentCatalog();
  45. try
  46. {
  47. DublinCoreSchema dc = xmp.createAndAddDublinCoreSchema();
  48. dc.setTitle(file);
  49. dc.addCreator(Constante.APPLICATION);
  50.  
  51. PDFAIdentificationSchema id = xmp.createAndAddPFAIdentificationSchema();
  52. id.setPart(3);
  53. id.setConformance("A");
  54.  
  55. XmpSerializer serializer = new XmpSerializer();
  56. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  57. serializer.serialize(xmp, baos, true);
  58.  
  59. PDMetadata metadata = new PDMetadata(doc);
  60. metadata.importXMPMetadata(baos.toByteArray());
  61. catalogue.setMetadata(metadata);
  62. }
  63. catch(BadFieldValueException e)
  64. {
  65. // won't happen here, as the provided value is valid
  66. throw new IllegalArgumentException(e);
  67. }
  68.  
  69. // sRGB output intent
  70. InputStream colorProfile = CreatePDFA.class.getResourceAsStream(
  71. "../../../pdmodel/sRGB.icc");
  72. PDOutputIntent intent = new PDOutputIntent(doc, colorProfile);
  73. intent.setInfo("sRGB IEC61966-2.1");
  74. intent.setOutputCondition("sRGB IEC61966-2.1");
  75. intent.setOutputConditionIdentifier("sRGB IEC61966-2.1");
  76. intent.setRegistryName("http://www.color.org");
  77.  
  78.  
  79. catalogue.addOutputIntent(intent);
  80. catalogue.setLanguage("en-US");
  81.  
  82. PDViewerPreferences pdViewer =new PDViewerPreferences(page.getCOSObject());
  83. pdViewer.setDisplayDocTitle(true);;
  84. catalogue.setViewerPreferences(pdViewer);
  85.  
  86. PDMarkInfo mak = new PDMarkInfo();
  87. PDStructureTreeRoot treeRoot = new PDStructureTreeRoot();
  88. catalogue.setMarkInfo(mak);
  89. catalogue.setStructureTreeRoot(treeRoot);
  90.  
  91. catalogue.getMarkInfo().setMarked(true);
  92. PDDocumentInformation info = doc.getDocumentInformation();
  93.  
  94.  
  95. Calendar cal = Calendar.getInstance();
  96. info.setCreationDate(cal);
  97. info.setModificationDate(cal);
  98.  
  99. info.setAuthor(Constante.AUTEUR);
  100. info.setProducer(Constante.APPLICATION);;
  101. // info.setCreator(Constante.APPLICATION);
  102. info.setTitle("titlePDF");
  103. info.setSubject("Imag to PDF");
  104.  
  105. doc.save(file);
  106. }catch (Exception e) {
  107. throw new IllegalArgumentException(e);
  108. }
  109. }
Add Comment
Please, Sign In to add comment