fei
2025-11-09 afae2409d65e0c044b8119b3fd8f57e438c18a08
archiveManager/src/main/java/com/ruoyi/service/impl/IArchiveDoublePdfGenerateServiceImpl.java
@@ -1,21 +1,21 @@
package com.ruoyi.service.impl;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.service.IArchiveDoublePdfGenerateService;
import org.apache.http.HttpEntity;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import cn.hutool.http.HttpRequest;
import org.apache.commons.io.IOUtils;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.*;
import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Paths;
@@ -29,54 +29,93 @@
    private  String MUL_LAYER_PDF_DOWNLOAD_URL = OCRServer + "api/doc/download";
    public void testConnection()
    {
        // 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
        // 创建Get请求
        HttpGet httpGet = new HttpGet(OCRServer);
        // 响应模型
        CloseableHttpResponse response = null;
        try {
            // 由客户端执行(发送)Get请求
            response = httpClient.execute(httpGet);
            // 从响应模型中获取响应实体
            HttpEntity responseEntity = response.getEntity();
            System.out.println("响应状态为:" + response.getStatusLine());
            if (responseEntity != null) {
                System.out.println("响应内容长度为:" + responseEntity.getContentLength());
                System.out.println("响应内容为:" + EntityUtils.toString(responseEntity));
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                // 释放资源
                if (httpClient != null) {
                    httpClient.close();
                }
                if (response != null) {
                    response.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
    public void unicodeEscapeToChinese (String unicodeEscapedString) {
        // 解码Unicode转义序列
        StringBuilder decodedString = new StringBuilder();
        int i = 0;
        while (i < unicodeEscapedString.length()) {
            if (unicodeEscapedString.startsWith("\\u", i)) {
                // 找到一个Unicode转义序列
                int codePoint = Integer.parseInt(unicodeEscapedString.substring(i + 2, i + 6), 16);
                decodedString.appendCodePoint(codePoint);
                i += 6; // 跳过这个Unicode转义序列
            } else {
                // 不是Unicode转义序列,直接添加字符
                decodedString.append(unicodeEscapedString.charAt(i));
                i++;
            }
        }
        // 打印解码后的字符串
        System.out.println(decodedString.toString());
    }
    public AjaxResult testConnection(MultipartFile multipartFile) throws IOException {
        // 创建临时文件
        File file = File.createTempFile("temp", ".pdf");
        // 将 MultipartFile 转存到目标文件
        multipartFile.transferTo(file);
        String response = HttpRequest.post("http://127.0.0.1:1224/api/doc/upload")
                .contentType("multipart/form-data; boundary=<calculated when request is sent>")
                .form("file", file)
                .execute()
                .body();
        System.out.println(response);
        JSONObject json = JSONUtil.parseObj(response);
       // System.out.println(json.get("data"));
        return AjaxResult.success(json);
       // unicodeEscapeToChinese(response);
      //  System.out.println(res);
     //   unicodeEscapeToChinese(res);
    }
    @Override
    public AjaxResult getDownLoadInfo(String id) {
        JSONObject inputObject = new JSONObject();
        inputObject.put("id", id);
        String res = HttpRequest.post("http://127.0.0.1:1224/api/doc/download")
                //   .contentType("multipart/form-data; boundary=<calculated when request is sent>")
                //.form("file", file)
                .body(inputObject.toString())
                .contentType("application/json")
                .execute()
                .body();
        JSONObject json = JSONUtil.parseObj(res);
        return AjaxResult.success(json);
    }
    public void doublePdfGenerate() throws IOException {
        // 构建请求URL和文件路径
        String url = "http://127.0.0.1:1224/api/doc/upload";
        String path = "测试文件.pdf";
        String options_json = "{\"doc.extractionMode\": \"fullPage\"}";
      //  String ocrUrl = "http://localhost:32009/umi/api/ocr";
        File pdfFile = new File("34.pdf");
        String base64 = java.util.Base64.getEncoder().encodeToString(Files.readAllBytes(pdfFile.toPath()));
        JSONObject inputObject = new JSONObject();
        inputObject.put("base64", base64);
        //inputObject.put("options", new JSONObject().put("ocr.language", "models/config_chinese.txt"));
        String response = HttpRequest.post(OCRServer+"/umi/api/ocr")
                .body(inputObject.toString())
                .contentType("application/json")
                .execute()
                .body();
        System.out.println("识别结果: " + response);
// 创建HttpClient实例
//        HttpClient client = HttpClient.newHttpClient();