链接中的中文是不是要encode一下啊

解决方案 »

  1.   

    问题解决
    原目的是在pdf中点击链接打开另外一个本地excel文件,excel文件名包含中文,但是生成的pdf链接里不认中文,点击打开时,文件路径里的中文都没有了,造成文件无法找到。原因在于itext的PdfAction的初始化方法里,都是以下方式
    put(PdfName.F, new PdfString(application));对于application没有做编码设置。
    于是做了个子类,重写了初始化方法,加入了字符编码。子类如下:import com.itextpdf.text.pdf.PdfAction;
    import com.itextpdf.text.pdf.PdfDictionary;
    import com.itextpdf.text.pdf.PdfName;
    import com.itextpdf.text.pdf.PdfString;
     
    public class BPdfAction extends PdfAction {
     
     public BPdfAction(String application, String parameters, String operation, String defaultDir,String encoding) {
      put(PdfName.S, PdfName.LAUNCH);
      if(parameters==null&&operation==null&&defaultDir==null){
       put(PdfName.F, new PdfString(application, encoding));
      }else{
       PdfDictionary dic=new  PdfDictionary();
       dic.put(PdfName.F, new PdfString(application, encoding));
       if(parameters!=null){
        dic.put(PdfName.P, new PdfString(parameters, encoding));
       }
       if(operation!=null){
        dic.put(PdfName.P, new PdfString(operation, encoding));
       }
       if(defaultDir!=null){
        dic.put(PdfName.P, new PdfString(defaultDir, encoding));
       }
       put(PdfName.WIN,dic);
      }
     }
    }调用
    BPdfAction act=new BPdfAction(action,null,null,null,"GBK");
    中文问题解决
      

  2.   

      测试楼主的办法,可以向Pdf中添加一个由pdf文件启动指定文件的动作。  现在我想添加一个直接打开本地资源的链接,将BPdfAction中的代码改成    put(PdfName.S, PdfName.URI);    put(PdfName.URI, new PdfString(application, encoding));  结果输出可以发现中文存在了,但确是乱码,不知道有方法解决吗?