mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-06-17 13:05:03 +00:00

# Description of Changes Please provide a summary of the changes, including: - Extracted the `googleJavaFormatVersion` into a centralized Gradle property for easier management across modules. - Added consistent `spotless` formatting configuration to `common`, `proprietary`, and `stirling-pdf` modules. - Applied automatic import ordering and removed unused imports in numerous Java files. - Reordered and grouped imports consistently, improving overall code readability. - Removed excessive blank lines and standardized spacing. - Ensured a uniform coding style throughout the codebase using Spotless and Google Java Format with AOSP style. --- ## Checklist ### General - [x] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [x] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md) (if applicable) - [x] I have performed a self-review of my own code - [x] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing) for more details.
68 lines
2.6 KiB
Java
68 lines
2.6 KiB
Java
package stirling.software.common.util;
|
|
|
|
import io.github.pixee.security.Filenames;
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.io.IOException;
|
|
import java.net.URLEncoder;
|
|
import java.nio.charset.StandardCharsets;
|
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
|
import org.springframework.http.HttpHeaders;
|
|
import org.springframework.http.HttpStatus;
|
|
import org.springframework.http.MediaType;
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
public class WebResponseUtils {
|
|
|
|
public static ResponseEntity<byte[]> boasToWebResponse(
|
|
ByteArrayOutputStream baos, String docName) throws IOException {
|
|
return WebResponseUtils.bytesToWebResponse(baos.toByteArray(), docName);
|
|
}
|
|
|
|
public static ResponseEntity<byte[]> boasToWebResponse(
|
|
ByteArrayOutputStream baos, String docName, MediaType mediaType) throws IOException {
|
|
return WebResponseUtils.bytesToWebResponse(baos.toByteArray(), docName, mediaType);
|
|
}
|
|
|
|
public static ResponseEntity<byte[]> multiPartFileToWebResponse(MultipartFile file)
|
|
throws IOException {
|
|
String fileName = Filenames.toSimpleFileName(file.getOriginalFilename());
|
|
MediaType mediaType = MediaType.parseMediaType(file.getContentType());
|
|
|
|
byte[] bytes = file.getBytes();
|
|
|
|
return bytesToWebResponse(bytes, fileName, mediaType);
|
|
}
|
|
|
|
public static ResponseEntity<byte[]> bytesToWebResponse(
|
|
byte[] bytes, String docName, MediaType mediaType) throws IOException {
|
|
|
|
// Return the PDF as a response
|
|
HttpHeaders headers = new HttpHeaders();
|
|
headers.setContentType(mediaType);
|
|
headers.setContentLength(bytes.length);
|
|
String encodedDocName =
|
|
URLEncoder.encode(docName, StandardCharsets.UTF_8.toString())
|
|
.replaceAll("\\+", "%20");
|
|
headers.setContentDispositionFormData("attachment", encodedDocName);
|
|
return new ResponseEntity<>(bytes, headers, HttpStatus.OK);
|
|
}
|
|
|
|
public static ResponseEntity<byte[]> bytesToWebResponse(byte[] bytes, String docName)
|
|
throws IOException {
|
|
return bytesToWebResponse(bytes, docName, MediaType.APPLICATION_PDF);
|
|
}
|
|
|
|
public static ResponseEntity<byte[]> pdfDocToWebResponse(PDDocument document, String docName)
|
|
throws IOException {
|
|
|
|
// Open Byte Array and save document to it
|
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
document.save(baos);
|
|
// Close the document
|
|
document.close();
|
|
|
|
return boasToWebResponse(baos, docName);
|
|
}
|
|
}
|