Przeglądaj źródła

pdf预览支持url中有中文或特殊字符

陈精华 6 lat temu
rodzic
commit
70323b8ee3

+ 4 - 9
jodconverter-web/src/main/java/cn/keking/web/controller/OnlinePreviewController.java

@@ -15,13 +15,8 @@ import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.net.URLConnection;
-import java.net.URLDecoder;
+import java.io.*;
+import java.net.*;
 import java.util.Arrays;
 import java.util.List;
 
@@ -98,7 +93,7 @@ public class OnlinePreviewController {
         InputStream inputStream = null;
         try {
             String strUrl = urlPath.trim();
-            URL url = new URL(strUrl);
+            URL url = new URL(new URI(strUrl).toASCIIString());
             //打开请求连接
             URLConnection connection = url.openConnection();
             HttpURLConnection httpURLConnection = (HttpURLConnection) connection;
@@ -109,7 +104,7 @@ public class OnlinePreviewController {
             while (-1 != (len = inputStream.read(bs))) {
                 resp.getOutputStream().write(bs, 0, len);
             }
-        } catch (IOException e) {
+        } catch (IOException | URISyntaxException e) {
             e.printStackTrace();
         } finally {
             if (inputStream != null) {

+ 3 - 2
jodconverter-web/src/main/resources/web/pdf.ftl

@@ -12,12 +12,12 @@
     </style>
 </head>
 <body>
-    <#if pdfUrl?contains("http://")>
+    <#if pdfUrl?contains("http://") || pdfUrl?contains("https://")>
         <#assign finalUrl="${pdfUrl}">
     <#else>
         <#assign finalUrl="${baseUrl}${pdfUrl}">
     </#if>
-    <iframe src="/pdfjs/web/viewer.html?file=${finalUrl}" width="100%" frameborder="0"></iframe>
+    <iframe src="" width="100%" frameborder="0"></iframe>
 
 <#--    <img src="images/left.png" style="position: fixed; cursor: pointer; top: 40%; right: 60px; z-index: 999;" alt="使用图片预览" title="使用图片预览" onclick="goForImage()"/>-->
     <span class="fa fa-file-image-o fa-5x" style="position: fixed; cursor: pointer; top: 40%; right: 50px; z-index: 999;" title="使用图片预览" onclick="goForImage()"></span>
@@ -25,6 +25,7 @@
 
 </body>
 <script type="text/javascript">
+    document.getElementsByTagName('iframe')[0].src = "/pdfjs/web/viewer.html?file="+encodeURIComponent('${finalUrl}');
     document.getElementsByTagName('iframe')[0].height = document.documentElement.clientHeight-10;
     /**
      * 页面变化调整高度