Skip to content

Commit

Permalink
修复 Github Actions 脚本编译错误,增加 PDF 合并接口。
Browse files Browse the repository at this point in the history
  • Loading branch information
Suomea committed Jun 3, 2024
1 parent 57b871f commit 0b2319a
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 5 deletions.
13 changes: 8 additions & 5 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,17 @@ jobs:

steps:
- name: Checkout code
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: Setup Java
uses: actions/setup-java@v2
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: "temurin"
cache: maven

- name: Run Maven Package
run: mvn clean package
run: mvn package

- name: SCP JAR to Server
uses: appleboy/scp-action@master
Expand All @@ -29,11 +31,12 @@ jobs:
key: ${{ secrets.SERVER_SSH_KEY }}
source: "target/web-tools.jar"
target: "/data/backend/web-tools"
strip_components: 1

- name: SSH into Server and restart service
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: echo test > a.log
key: ${{ secrets.SERVER_SSH_KEY }}
script: cd /data/backend/web-tools && source /etc/profile && ./run.sh restart
14 changes: 14 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,23 @@

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>

<dependencies>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-core</artifactId>
<version>8.0.3</version>
<type>pom</type>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
Expand Down
51 changes: 51 additions & 0 deletions src/main/java/com/jacky/webtools/ctrl/PdfController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package com.jacky.webtools.ctrl;

import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.utils.PdfMerger;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.Arrays;

@Tag(name = "PDF")
@RestController
@RequestMapping("pdf")
public class PdfController {

@Operation(summary = "合并")
@PostMapping(value = "merge", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public void merge(@RequestPart("file1") MultipartFile file1, @RequestPart("file2") MultipartFile file2, HttpServletResponse response) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfWriter writer = new PdfWriter(baos);
PdfDocument mergedPdf = new PdfDocument(writer);
PdfMerger merger = new PdfMerger(mergedPdf);

for (InputStream inputFile : Arrays.asList(file1.getInputStream(), file2.getInputStream())) {
PdfDocument pdfDoc = new PdfDocument(new PdfReader(inputFile));
merger.merge(pdfDoc, 1, pdfDoc.getNumberOfPages());
pdfDoc.close();
}

mergedPdf.close();

response.setContentType(MediaType.APPLICATION_PDF_VALUE);
response.setHeader("Content-Disposition", "attachment; filename=\"merged.pdf\"");
response.getOutputStream().write(baos.toByteArray());
response.flushBuffer();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}

0 comments on commit 0b2319a

Please sign in to comment.