Foro de elhacker.net

Programación => Java => Mensaje iniciado por: rub'n en 8 Marzo 2017, 13:18 pm



Título: Como hacer esto con Itext o alguna otra sugerencia
Publicado por: rub'n en 8 Marzo 2017, 13:18 pm
Como les va,

Pues estoy diseñando un pdf desde java , con itext 2.1.7, la imagen a continuación:

Que recomiendan usar para programarlo así en pdf

(http://i65.tinypic.com/2ur3v2h.jpg)


Esto lo programe solo con itext, pero según batik permite realizar los círculos en .svg y de manera más fácil ?


(http://i67.tinypic.com/sesjo4.jpg)

(https://files.slack.com/files-pri/T0T8MDAMA-F4K1GP8UW/pasted_image_at_2017_03_14_04_14_pm.png)

(https://files.slack.com/files-pri/T0T8MDAMA-F4TFF9NTH/pdfelhackernet.png)



La Solución fue usardescarga XD  (https://github.com/zxh/iText/blob/master/iText%20in%20Action%202nd%20Edition.pdf) iText in Action 2nd Edition.pdf con mucho café

Use esta dependencia maven

Código
  1. <dependency>
  2. <groupId>com.itextpdf</groupId>
  3. <artifactId>itextpdf</artifactId>
  4. <version>5.5.10</version>
  5. </dependency>
  6.  

Con este código puedo crear un circulo y sobreponerle texto o lo que se desee

Código
  1. private void createCircleScoreAndLabel() throws DocumentException, IOException {
  2. final BaseColor colorScoreLabel = PdfTypes.cvssScore(cve);
  3. final String scoreText = PdfTypes.getCVSSLevel(cve.getCvss());
  4. //levelScore                      //x     y    
  5. createRectangle(colorScoreLabel,70f, 540f ,  190f , 40f);
  6. //levelScore            
  7. createTextOver(scoreText,   25,      160f , 550f);
  8.  
  9. final PdfContentByte textCvssScore = writer.getDirectContent();
  10. textCvssScore.saveState();
  11. textCvssScore.beginText();
  12. textCvssScore.setColorFill(BaseColor.WHITE);
  13. textCvssScore.setFontAndSize(bf, 80);
  14. textCvssScore.endText();
  15. final String score = PdfTypes.formatScore(cve.getCvss());
  16. textCvssScore.showTextAligned(Element.ALIGN_CENTER, score, 160f, 645f, 0f);
  17. textCvssScore.restoreState();
  18.  
  19. final PdfContentByte circleCvssScore = writer.getDirectContentUnder();
  20. circleCvssScore.saveState();
  21. //underCircle.setLineWidth(0.5f);
  22. circleCvssScore.setColorStroke(BaseColor.BLACK);
  23. circleCvssScore.setColorFill(PdfTypes.cvssScore(cve));
  24. circleCvssScore.circle(160f, 670f, 75f);
  25. circleCvssScore.fill();
  26. circleCvssScore.restoreState();
  27.  
  28.  
  29. }
  30.