javaweb-wkhtmltopdf 在javaWeb中乱码的问题

问题描述

wkhtmltopdf 在javaWeb中乱码的问题

我是在web项目中使用wkhtmltopdf,有时会遇到表单,所以必须要用到--post的参数
但是这个参数中加入中文,就会出现乱码。只有在post中会出现乱码,如果只是单纯的html就不会出现这个情况。

 ![图片说明](http://img.ask.csdn.net/upload/201501/21/1421832966_615937.png)

 ![图片说明](http://img.ask.csdn.net/upload/201501/21/1421833038_158586.png)

 wkhtmltopdf:

F:wkhtmltopdfbinwkhtmltopdf.exe --post order.orderId 3 --post order.deliveryTime 3 --post order.productName 杨程巍 --post order.status 3 http://localhost:8080/PDFTest/create_PDF.action "F:Tomcat 7webappsPDFTestpdfFileorder.pdf"

解决方案

 public String createDataPDF(){

        List<HashMap<String, String>> options=new ArrayList<HashMap<String,String>>();
        //post参数
        HashMap<String,String> orderId=new HashMap<String, String>();
        orderId.put("optionName", "--post order.orderId");
        orderId.put("optionValue",this.order.getOrderId()+"");

        HashMap<String,String> deliveryTime=new HashMap<String, String>();
        deliveryTime.put("optionName", "--post order.deliveryTime");
        deliveryTime.put("optionValue",BASE64Util.encode(this.order.getDeliveryTime()+""));

        HashMap<String,String> productName=new HashMap<String, String>();
        productName.put("optionName", "--post order.productName");
        productName.put("optionValue",BASE64Util.encode(this.order.getProductName()));

        HashMap<String,String> status=new HashMap<String, String>();
        status.put("optionName", "--post order.status");
        status.put("optionValue",BASE64Util.encode(this.order.getStatus()));

        HashMap<String,String> pageSize=new HashMap<String, String>();
        pageSize.put("optionName", "--page-size");
        pageSize.put("optionValue","a4");

        options.add(orderId);
        options.add(deliveryTime);
        options.add(productName);
        options.add(status);
        options.add(pageSize);

        this.wkhtmltopdf.setFileName("order.pdf");
        this.wkhtmltopdf.setObjectPrintUrl("http://localhost:8080/PDFTest/create_PDF.action");
        this.wkhtmltopdf.setOptions(options);

        String temp= ServletActionContext.getServletContext().getRealPath("/");
        String pdfRealyPath=temp+"pdfFile\";
        PDFToll pdfToll=new PDFToll(this.wkhtmltopdf);
        pdfToll.createPDF(pdfRealyPath);

        return SUCCESS;
    }
 <struts>
    <!-- 设置编码格式 -->
    <constant name="struts.i18n.encoding" value="UTF-8"></constant>
    <!-- 创建 -->
    <package name="pdfTest" extends="struts-default">
        <action name="create_PDF" method="createPDF" class="com.test.action.CreatePDF">
            <result name="success">/objectPage.jsp</result>
        </action>

    <!-- 创建一个带参数的pdf -->
        <action name="create_Data_PDF" method="createDataPDF" class="com.test.action.PrintPageWithData">
            <result type="redirectAction">
                download_PDF?wkhtmltopdf.fileName=${wkhtmltopdf.fileName}
            </result>
        </action>

    <!-- 下载 -->
        <action name="download_PDF"  class="com.test.action.PDFPrint">
            <result name="success"  type="stream">
                <param name="contentType">application/pdf;charset=ISO8859-1</param>
                <param name="inputName">inputStream</param>
                <param name="contentDisposition">attachment;filename="${wkhtmltopdf.fileName}"</param>
                <param name="bufferSize">4096</param>
            </result>
        </action>
    </package>
</struts>
 //跳转到目标页面
        public String createPDF() throws UnsupportedEncodingException{

            this.order.setProductName(BASE64Util.decode(this.order.getProductName()));
            this.order.setDeliveryTime(BASE64Util.decode(this.order.getDeliveryTime()));
            this.order.setStatus(BASE64Util.decode(this.order.getStatus()));

            System.out.println(this.order.getDeliveryTime()+"n"+BASE64Util.decode(this.order.getDeliveryTime())+"n"+BASE64Util.getFromBASE64(this.order.getDeliveryTime()));
            return SUCCESS;
        }

ps:我用base64转了下码发现也不行,具体原因也不是很清楚,各位有没有遇到这种情况

时间: 2024-09-06 06:57:40

javaweb-wkhtmltopdf 在javaWeb中乱码的问题的相关文章

mysql-MySQL库中乱码怎么解决

问题描述 MySQL库中乱码怎么解决 我把MySQL中配置文件的格式更改了,model也注释了,数据库中的编码格式全部都调成一样的 为什么乱码还是没有解决,急急急,求大神给一些建议,谢谢了! 解决方案 mac下解决MySQL中文乱码的问题mac 解决MySQL中文乱码的问题解决MYSQL 中文乱码 解决方案二: 看一下这篇文章mysql中出现乱码的原因及其解决方法 解决方案三: 创建的数据库编码也一致吗? 解决方案四: 查看MySQL数据库编码 SHOW VARIABLES LIKE 'char

servlet中doGet和doPost中乱码问题

问题描述 servlet中doGet和doPost中乱码问题 所有的字符集都改成了UTF-8但是一直乱码,写servlet时试探性的删除了图中拖黑的代码,之后的乱码问题就解决了,这是什么原因(http://img.ask.csdn.net/upload/201512/23/1450862099_186009.png) 解决方案 dopost里面调用doget...那么你觉得dopost之后的代码还会走吗? 解决方案二: 在doGet里面添加 字符集设定 解决方案三: 在doGet里面添加 字符集

java中使用poi导出Excel,在2003版Excel中乱码的问题,求大神解答

问题描述 java中使用poi导出Excel,在2003版Excel中乱码的问题,求大神解答 问题如下.在系统中使用poi导出Excel,在别人的电脑上2010版的Excel中可以正常打开,在我本人电脑上的2003打开就是乱码,一开始查找资料是poi的jar包版本问题.系统上的poi jar包是3.0.整个系统的jar包不敢乱更换,所以只能别的方式修改.在Action中有转码语句: res.setHeader("Content-disposition", "attachmen

在ie中用js获取的url不乱码,在谷歌中乱码怎么解决

问题描述 在ie中用js获取的url不乱码,在谷歌中乱码怎么解决 var url = location.search; 这个url乱码 怎么解决,请大神教 解决方案 什么样的乱码? url 编码可不能说是乱码噢 %B9%C8%B8%E8 解决方案二: 包含了中文..如果是utf-8编码,可以decodeURIComponent解码下 alert(decodeURIComponent('%E4%B8%AD%E5%9B%BD')) 解决方案三: decodeURIComponent解码 解决方案四:

⑧javaWeb之在例子中学习(过滤器Filter) 前言

Fitler(过滤器) 过滤器filter是拦截请求,并对传给请求资源的ServletRequest 或 ServletResponse 进行处理的一个对象.可以用于登录,加密和解密,会话检查,图片转换等等   过滤器执行机制图: Filter API : http://docs.oracle.com/javase/6/docs/api/ Filter详解 Filter接口的构成:       所有的Filter类都必须实现javax.servlet.Filter接口.这个接口含有3个过滤器类必

javaweb js-关于javaweb的一点小问题

问题描述 关于javaweb的一点小问题 请问怎么实现类似电影院订票的样式,现在我想点击一个按钮,这个按钮点击了之后就会变色,然后数据库中的值由"0"变为"1",然后取消的话,又变色回来,数据库中的值从"1"变成"0",变色应该用js来控制吧,但怎么和数据库交互,想了好久,但在脑子里形成不了一个直观的思路. 解决方案 变色用js控制,那也得提交订票信息之后,再去改数据库啊-- 你这样点击一次,数据库值就变一次,请求的太频繁了吧

php做下载文件的实现代码及文件名中乱码解决方法

最近有人问我做下载文件的方法,对于php方法如下: 复制代码 代码如下: <?php header("Content-Type: application/force-download"); header("Content-Disposition: attachment; filename=ins.jpg"); readfile("imgs/test_Zoom.jpg"); ?> 第一行代码是强制下载: 第二行代码是给下载的内容指定一个

.net中发mail到hotmail中乱码问题的解决

解决|问题     在.net 中我们经常会利用MailMessage 和SmtpMail 配合发信,只要smtp server配置好,一般不会有什么大的问题    但最近我在帮 www.danceshopper.com 进行多语言升级的时候,发现只要是繁体的邮件,到了hotmail中就subject是乱码,内容也是乱码,但用foxmail或outlook收到客户端的时候,问题就不存在了,类似的问题也会在gmail[已经解决]163等地方出现,困扰了我好几天,经过反复总结测试后,我得到了一个[或

php做下载文件的实现代码及文件名中乱码解决方法_php技巧

最近有人问我做下载文件的方法,对于php方法如下: 复制代码 代码如下: <?php header("Content-Type: application/force-download"); header("Content-Disposition: attachment; filename=ins.jpg"); readfile("imgs/test_Zoom.jpg"); ?> 第一行代码是强制下载: 第二行代码是给下载的内容指定一个