如何实现打印word

1 业务背景
目前很多客户希望打印word格式的文件,但目前打印只支持excel格式和PDF格式的文件
2 解决方案
步骤一:获取列表勾选单据的id
public List<Object> getSelectRowId()
{
//获取列表选择的多条数据
ListSelectedRowCollection selectedRows = ((IListView) this.getView()).getSelectedRows();
Iterator<ListSelectedRow> rows = selectedRows.iterator();
ArrayList<Object> pkIds = new ArrayList<>();
while(rows.hasNext()){
ListSelectedRow row = rows.next();
//获取单据主键
Object primaryKeyValue = row.getPrimaryKeyValue();
pkIds.add(primaryKeyValue);
}
return pkIds;
}步骤二:调用打印接口,生成PDF的打印文件
打印服务调用
接口一:
PrtAttach prtAttach = BosPrintServiceHelper.execPrint(PrintWork work)
适用版本: V5.0.011,V5.0.019以上版本
接口二:
适用版本: V5.0.011,V5.0.019以上版本废弃,建议使用上面的execPrint接口
PrtAttach prtAttach = BosPrintServiceHelper.doPrint(PrintWork work)
public List<InputStream> getPrintPdf(List<Object> pkIds){
ArrayList<PrintTask> printTasks = new ArrayList<>();
PrintTask printTask = new PrintTask();
//获取打印模板id
String tplId = BosPrintServiceHelper.getTplIdByNum(TPLNUM);
printTask.setTplId(tplId);
printTask.setPkIds(pkIds);
printTasks.add(printTask);
PrintWork work = new PrintWork();
//设置打印语言
work.setPrintLang(PRINTLANG);
//设置打印类型
work.setExpType(PRINTTYPE);
//设置纵向节纸
work.setVerEconomizePaper(ISVERECONOMIZEPAPER);
//设置横向节纸
work.setHorEconomizePaper(ISHORECONOMIZEPAPER);
work.setTaskList(printTasks);
//调用打印
PrtAttach prtAttach = BosPrintServiceHelper.execPrint(work);
//获取打印文件
List<PrtAttach.AttachDetail> attachDetails = prtAttach.getAttachDetail();
List<InputStream> result=new ArrayList<>();
for (PrtAttach.AttachDetail attachDetail: attachDetails){
String filePath=attachDetail.getFilePath();
//附件下载的url
// String url=UrlService.getDomainContextUrl()+"/tempfile/download.do?"+filePath;
// this.getView().openUrl(url);
InputStream inputStream = BosPrintServiceHelper.getFileInputStream(filePath);
result.add(inputStream);
}
return result;
}步骤三:PDF转word
目前主要有三种解决方案:
方案一:Apache PDFBox+POI实现PDF转Word,但仅限简单转换,pdf中包含表格等复杂结构无法保留(免费)
public static void convertPdfToWord(InputStream inputStream, String wordFilePath) throws IOException {
PDDocument document = PDDocument.load(inputStream);
XWPFDocument wordDocument = new XWPFDocument();
PDFTextStripper pdfTextStripper = new PDFTextStripper();
int totalPages = document.getNumberOfPages();
for (int pageIndex = 0; pageIndex < totalPages; pageIndex++) {
pdfTextStripper.setStartPage(pageIndex + 1);
pdfTextStripper.setEndPage(pageIndex + 1);
String text = pdfTextStripper.getText(document);
addParagraphToWord(wordDocument, text);
}
document.close();
try (FileOutputStream out = new FileOutputStream(wordFilePath)) {
wordDocument.write(out);
}
wordDocument.close();
}
private static void addParagraphToWord(XWPFDocument document, String text) {
XWPFParagraph如何实现打印word
1 业务背景目前很多客户希望打印word格式的文件,但目前打印只支持excel格式和PDF格式的文件2 解决方案步骤一:获取列表勾选单据的idpubl...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



