电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

如何实现打印word

来源:金蝶云社区作者:金蝶2024-09-2311

如何实现打印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格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信