Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中将表格从word文档复制到pdf文档?_Java_Pdf_Itext_Apache Poi - Fatal编程技术网

如何在java中将表格从word文档复制到pdf文档?

如何在java中将表格从word文档复制到pdf文档?,java,pdf,itext,apache-poi,Java,Pdf,Itext,Apache Poi,**我正在编写代码,以便将文本和图像复制到PDF中,但没有从word文档中复制表格 在这里,我首先使用ApachePOI从word文档中获取文本和图像,然后我想将表格从word文档写入pdf文档 将页面大小视为标准A4的函数 看看下面代码中的convertWordToPdf函数 public static void convertWordToPdf(final String src, final String desc) { try { final Fil

**我正在编写代码,以便将文本和图像复制到PDF中,但没有从word文档中复制表格 在这里,我首先使用ApachePOI从word文档中获取文本和图像,然后我想将表格从word文档写入pdf文档

  • 将页面大小视为标准A4的函数
  • 看看下面代码中的convertWordToPdf函数

    public static void convertWordToPdf(final String src, final String desc) {
            try {
                final FileInputStream fs = new FileInputStream(src);
                final XWPFDocument doc = new XWPFDocument(fs);
                final Document pdfdoc = new Document(PageSize.A4, 72, 72, 72, 72);
                final PdfWriter pwriter = PdfWriter.getInstance(pdfdoc,
                        new FileOutputStream(desc));
                pwriter.setInitialLeading(20);
                final List<XWPFParagraph> plist = doc.getParagraphs();
                pdfdoc.open();
                for (int i = 0; i < plist.size(); i++) {
                    final XWPFParagraph pa = (XWPFParagraph)plist.get(i);
                    final List<XWPFRun> runs = pa.getRuns();
                    for (int j = 0; j < runs.size(); j++) {
                        final XWPFRun run = (XWPFRun) runs.get(j);
                        final List<XWPFPicture> piclist = run.getEmbeddedPictures();
                        final Iterator<XWPFPicture> iterator = piclist.iterator();
                         List<XWPFTable> tabList = doc.getTables();
                        final Iterator<XWPFTable> tabIterator = tabList.iterator();
                        while (iterator.hasNext()) {
                        final XWPFPicture pic = (XWPFPicture) iterator.next();
                            final XWPFPictureData picdata = pic.getPictureData();
                            final byte[] bytepic = picdata.getData();
                            final Image imag = Image.getInstance(bytepic);
                            imag.scaleAbsoluteHeight(40);
                            imag.scaleAbsoluteWidth((imag.getWidth() * 30) / imag.getHeight());
                            pdfdoc.add(imag);
                        }
          
                        final int color = getCode(run.getColor());
                        Font f = null;
                        if (run.isBold() && run.isItalic())
                            f = FontFactory.getFont(FontFactory.TIMES_ROMAN,
                                    run.getFontSize(), Font.BOLDITALIC,
                                new Color(color));
                        else if (run.isBold())
                            f = FontFactory
                                    .getFont(FontFactory.TIMES_ROMAN,
                                            run.getFontSize(), Font.BOLD,
                                    new Color(color));
                        else if (run.isItalic())
                            f = FontFactory.getFont(FontFactory.TIMES_ROMAN, run
                                .getFontSize(), Font.ITALIC, new Color(
                                    color));
                        else if (run.isStrike())
                            f = FontFactory.getFont(FontFactory.TIMES_ROMAN,
                                    run.getFontSize(), Font.STRIKETHRU,
                                new Color(color));
                        else
                            f = FontFactory.getFont(FontFactory.TIMES_ROMAN, run
                                .getFontSize(), Font.NORMAL, new Color(
                                    color));
                        final String text = run.getText(-1);
                        byte[] bs;
                        if (text != null) {
                            bs = text.getBytes();
                            final String str = new String(bs, "UTF-8");
                            final Chunk chObj1 = new Chunk(str, f);
                            pdfdoc.add(chObj1);
                        }
    
                    }
                    pdfdoc.add(new Chunk(Chunk.NEWLINE));
                }
                
                
                
                
                pdfdoc.close();
            } catch (final Exception e) {
                e.printStackTrace();
            }
    
    public static void convertWordToPdf(最终字符串src,最终字符串desc){
    试一试{
    最终文件输入流fs=新文件输入流(src);
    最终XWPF文件=新XWPF文件(fs);
    最终文件pdfdoc=新文件(PageSize.A4,72,72,72,72);
    final PdfWriter pwriter=PdfWriter.getInstance(pdfdoc,
    新文件输出流(desc));
    pwriter.setInitialLeading(20);
    最终列表plist=doc.get段落();
    pdfdoc.open();
    对于(int i=0;i
    • 从word文档中获取表格,并使用Itext API将其写回

      List tablesList=doc.getTables();
      pdftable=新PdfPTable(3);//表列表移动 for(XWPFTable XWPFTable:tableList){ pdftable=newpdfptable(xwpfTable.getRow(0.getTableCells().size()); List row=xwpfTable.getRows(); 对于(XWPFTableRow XWPFTableRow:row){ 列表单元格=xwpfTableRow.getTableCells(); 用于(XWPFTableCell XWPFTableCell:cell){ if(xwpfTableCell!=null) { //table=新表(cell.size()); pdftable.addCell(xwpttablecell.getText()); } } } pdfdoc.add(pdftable)

    看一看
             }