如何在java中将表格从word文档复制到pdf文档?
**我正在编写代码,以便将文本和图像复制到PDF中,但没有从word文档中复制表格 在这里,我首先使用ApachePOI从word文档中获取文本和图像,然后我想将表格从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
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)
}