调用工具:PDF生成
This commit is contained in:
parent
74a610733f
commit
4856d11590
15
pom.xml
15
pom.xml
@ -126,6 +126,21 @@
|
|||||||
<artifactId>jsoup</artifactId>
|
<artifactId>jsoup</artifactId>
|
||||||
<version>1.20.1</version>
|
<version>1.20.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- https://mvnrepository.com/artifact/com.itextpdf/itext-core -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.itextpdf</groupId>
|
||||||
|
<artifactId>itext-core</artifactId>
|
||||||
|
<version>9.1.0</version>
|
||||||
|
<type>pom</type>
|
||||||
|
</dependency>
|
||||||
|
<!-- https://mvnrepository.com/artifact/com.itextpdf/font-asian -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.itextpdf</groupId>
|
||||||
|
<artifactId>font-asian</artifactId>
|
||||||
|
<version>9.1.0</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<repositories>
|
<repositories>
|
||||||
|
@ -24,4 +24,6 @@ public interface ToolsService {
|
|||||||
String terminalTool(String command);
|
String terminalTool(String command);
|
||||||
|
|
||||||
void downloadTool(String url, String name);
|
void downloadTool(String url, String name);
|
||||||
|
|
||||||
|
void pdfTool(String name, String context);
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,6 @@ import org.springframework.ai.ollama.OllamaChatModel;
|
|||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -80,4 +79,10 @@ public class ToolsServiceImpl implements ToolsService {
|
|||||||
DownloadTool downloadTool = new DownloadTool();
|
DownloadTool downloadTool = new DownloadTool();
|
||||||
downloadTool.downloadResource(url, name);
|
downloadTool.downloadResource(url, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void pdfTool(String name, String context) {
|
||||||
|
PDFGenerationTool pdfTool = new PDFGenerationTool();
|
||||||
|
pdfTool.generatePDF(name, context);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -97,4 +97,15 @@ public class ToolController {
|
|||||||
toolsService.downloadTool(url, name);
|
toolsService.downloadTool(url, name);
|
||||||
return R.ok();
|
return R.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/pdfTool")
|
||||||
|
@Operation(summary = "PDF生成")
|
||||||
|
public R<?> pdfTool(@RequestBody JSONObject params) {
|
||||||
|
String context = params.getStr("context");
|
||||||
|
String name = params.getStr("name");
|
||||||
|
CheckUtils.checkEmpty(context, "内容");
|
||||||
|
CheckUtils.checkEmpty(name, "文件名");
|
||||||
|
toolsService.pdfTool(name, context);
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,56 @@
|
|||||||
|
package com.huangge1199.aiagent.tools;
|
||||||
|
|
||||||
|
import cn.hutool.core.io.FileUtil;
|
||||||
|
import com.itextpdf.kernel.font.PdfFont;
|
||||||
|
import com.itextpdf.kernel.font.PdfFontFactory;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfDocument;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfWriter;
|
||||||
|
import com.itextpdf.layout.Document;
|
||||||
|
import com.itextpdf.layout.element.Paragraph;
|
||||||
|
import org.springframework.ai.tool.annotation.Tool;
|
||||||
|
import org.springframework.ai.tool.annotation.ToolParam;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PDFTool
|
||||||
|
*
|
||||||
|
* @author huangge1199
|
||||||
|
* @since 2025/5/28 16:23:46
|
||||||
|
*/
|
||||||
|
public class PDFGenerationTool {
|
||||||
|
|
||||||
|
@Tool(description = "Generate a PDF file with given content")
|
||||||
|
public String generatePDF(
|
||||||
|
@ToolParam(description = "Name of the file to save the generated PDF") String fileName,
|
||||||
|
@ToolParam(description = "Content to be included in the PDF") String content) {
|
||||||
|
String fileDir = FileConstant.FILE_SAVE_DIR + "/pdf";
|
||||||
|
String filePath = fileDir + "/" + fileName;
|
||||||
|
try {
|
||||||
|
// 创建目录
|
||||||
|
FileUtil.mkdir(fileDir);
|
||||||
|
// 创建 PdfWriter 和 PdfDocument 对象
|
||||||
|
try (PdfWriter writer = new PdfWriter(filePath);
|
||||||
|
PdfDocument pdf = new PdfDocument(writer);
|
||||||
|
Document document = new Document(pdf)) {
|
||||||
|
// 自定义字体(需要人工下载字体文件到特定目录)
|
||||||
|
// String fontPath = Paths.get("src/main/resources/static/fonts/simsun.ttf")
|
||||||
|
// .toAbsolutePath().toString();
|
||||||
|
// PdfFont font = PdfFontFactory.createFont(fontPath,
|
||||||
|
// PdfFontFactory.EmbeddingStrategy.PREFER_EMBEDDED);
|
||||||
|
// 使用内置中文字体
|
||||||
|
// PdfFont font = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H");
|
||||||
|
// document.setFont(font);
|
||||||
|
// 创建段落
|
||||||
|
Paragraph paragraph = new Paragraph(content);
|
||||||
|
// 添加段落并关闭文档
|
||||||
|
document.add(paragraph);
|
||||||
|
}
|
||||||
|
return "PDF generated successfully to: " + filePath;
|
||||||
|
} catch (IOException e) {
|
||||||
|
return "Error generating PDF: " + e.getMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user