ec5be9f05952c3cb2290dbda13b6fbd338d471d9.svn-base 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package cn.com.goldenwater.dcproj.utils;
  2. import org.apache.poi.openxml4j.opc.OPCPackage;
  3. import org.apache.poi.xwpf.usermodel.XWPFDocument;
  4. import org.apache.poi.xwpf.usermodel.XWPFParagraph;
  5. import org.apache.xmlbeans.XmlException;
  6. import org.apache.xmlbeans.XmlToken;
  7. import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps;
  8. import org.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D;
  9. import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline;
  10. import java.io.IOException;
  11. import java.io.InputStream;
  12. public class CustomXWPFDocument extends XWPFDocument {
  13. public CustomXWPFDocument(InputStream in) throws IOException {
  14. super(in);
  15. }
  16. public CustomXWPFDocument() {
  17. super();
  18. }
  19. public CustomXWPFDocument(OPCPackage pkg) throws IOException {
  20. super(pkg);
  21. }
  22. /**
  23. * @param ind
  24. * @param width 宽
  25. * @param height 高
  26. * @param paragraph 段落
  27. */
  28. public void createPicture(String blipId, int ind, int width, int height, XWPFParagraph paragraph) {
  29. final int EMU = 9525;
  30. width *= EMU;
  31. height *= EMU;
  32. CTInline inline = paragraph.createRun().getCTR().addNewDrawing().addNewInline();
  33. String picXml = ""
  34. + "<a:graphic xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\">"
  35. + " <a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">"
  36. + " <pic:pic xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">"
  37. + " <pic:nvPicPr>" + " <pic:cNvPr id=\""
  38. + ind
  39. + "\" name=\"Generated\"/>"
  40. + " <pic:cNvPicPr/>"
  41. + " </pic:nvPicPr>"
  42. + " <pic:blipFill>"
  43. + " <a:blip r:embed=\""
  44. + blipId
  45. + "\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"/>"
  46. + " <a:stretch>"
  47. + " <a:fillRect/>"
  48. + " </a:stretch>"
  49. + " </pic:blipFill>"
  50. + " <pic:spPr>"
  51. + " <a:xfrm>"
  52. + " <a:off x=\"0\" y=\"0\"/>"
  53. + " <a:ext cx=\""
  54. + width
  55. + "\" cy=\""
  56. + height
  57. + "\"/>"
  58. + " </a:xfrm>"
  59. + " <a:prstGeom prst=\"rect\">"
  60. + " <a:avLst/>"
  61. + " </a:prstGeom>"
  62. + " </pic:spPr>"
  63. + " </pic:pic>"
  64. + " </a:graphicData>" + "</a:graphic>";
  65. inline.addNewGraphic().addNewGraphicData();
  66. XmlToken xmlToken = null;
  67. try {
  68. xmlToken = XmlToken.Factory.parse(picXml);
  69. } catch (XmlException xe) {
  70. xe.printStackTrace();
  71. }
  72. inline.set(xmlToken);
  73. inline.setDistT(0);
  74. inline.setDistB(0);
  75. inline.setDistL(0);
  76. inline.setDistR(0);
  77. CTPositiveSize2D extent = inline.addNewExtent();
  78. extent.setCx(width);
  79. extent.setCy(height);
  80. CTNonVisualDrawingProps docPr = inline.addNewDocPr();
  81. docPr.setId(ind);
  82. docPr.setName("图片" + ind);
  83. docPr.setDescr("测试");
  84. }
  85. }