chuyển đổi html sang pdf

Cách chuyển đổi HTML sang PDF | HTML sang PDF trực tuyến

HTML là định dạng tệp hàng đầu cho phát triển web và phần lớn các trình duyệt web hiện đại đều hỗ trợ thông số kỹ thuật HTML. Mặc dù không phụ thuộc vào nền tảng và có thể xem trên bất kỳ hệ điều hành nào, nhưng chúng cũng dễ bị các tập lệnh độc hại và không thể dễ dàng chia sẻ qua internet. Vì vậy, để tránh những trường hợp như vậy và để lưu trữ lâu dài, chúng tôi lưu trang web dưới dạng PDF(Định dạng tài liệu di động).Vì vậy, trong bài viết này, chúng tôi sẽ thảo luận về các bước chuyển đổi HTML sang PDF bằng Java REST API.

API chuyển đổi HTML sang PDF

Aspose.HTML Cloud SDK for Java cho phép bạn thực hiện các thao tác xử lý HTML trong các ứng dụng Java. Chúng tôi cũng có thể chuyển đổi HTML sang các định dạng tài liệu có bố cục cố định (PDF hoặc XPS).Vì vậy, để thực hiện chuyển đổi, chúng tôi có thể tải HTML nguồn (XHTML, MHTML, EPUB, Markdown) từ bộ nhớ đám mây hoặc cung cấp URL của trang web. Bây giờ để sử dụng SDK, vui lòng thêm phần phụ thuộc sau vào pom.xml của dự án xây dựng maven của bạn để có thể thêm aspose-html.jar vào dự án:

<repositories> 
    <repository>
        <id>aspose-cloud</id>
        <name>artifact.aspose-cloud-releases</name>
        <url>https://artifact.aspose.cloud/repo</url>
    </repository>   
</repositories>

<dependencies>
    <dependency>
        <groupId>com.aspose</groupId>
	<artifactId>aspose-html-cloud</artifactId>
	<version>20.7.0</version>
	<scope>compile</scope>
    </dependency>
</dependencies>

Chuyển đổi HTML sang PDF trong Java

Vui lòng làm theo các bước dưới đây để chuyển đổi trang web sang PDF trong ứng dụng Java.

  • Trước hết, chúng ta cần chỉ định chi tiết cho Configuration.setAPPSID.
  • Thứ hai, chúng ta chỉ định thông tin Configuration.setAPIKEY.
  • Thứ ba, chúng ta thiết lập chi tiết setBasePath(..).
  • Sau đó chúng ta cần chỉ định chi tiết setAuthPath(..).
  • Đặt setUserAgent(…) làm WebKit.
  • Để hỗ trợ cho chính mình, chúng ta sẽ đặt setDebug(..) thành true.
  • API cũng cho phép chúng ta chỉ định chi tiết lề cho tệp kết quả.
  • Bước tiếp theo là đọc tệp HTML đầu vào và tải nó vào phiên bản File.
  • Bây giờ chúng ta cần tạo một thể hiện của lớp RequestBody và phân tích phương tiện dưới dạng “multipart/form-data”.
  • Tạo một đối tượng của lớp ConversionApi.
  • Vì chúng ta sẽ tải tệp lên bộ nhớ đám mây nên chúng ta cũng cần tạo một phiên bản StorageApi.
  • Bây giờ chúng ta cần gọi PostConvertDocumentInRequestToPdf(..) để bắt đầu quá trình chuyển đổi. Phương pháp này chấp nhận tên tệp đầu vào, tên tệp kết quả và chi tiết lề và kích thước tệp kết quả làm đối số.
  • Sau khi chuyển đổi, kết quả được trả về đối tượng Stream chứa các byte thô của nội dung phản hồi.
  • Bây giờ chúng ta cần lấy nội dung phản hồi đã khử tuần tự của phản hồi thành công vào đối tượng ResponseBody.
  • Tải tệp kết quả từ bộ nhớ đám mây xuống đối tượng ResponseBody.
  • Và cuối cùng, chúng ta sẽ gọi phương thức tùy chỉnh để lưu tài liệu PDF kết quả vào ổ đĩa hệ thống cục bộ.
import com.aspose.html.api.ConversionApi;

import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.ResponseBody;
import retrofit2.Call;
import java.io.*;
public class conversionCode {
    public static void main(String[] args) {
    com.aspose.html.Configuration.setAPP_SID("c235e685-1aab-4cda-a95b-54afd63eb87f");
    com.aspose.html.Configuration.setAPI_KEY("b8da4ee37494f2ef8da3c727f3a0acb9");
    com.aspose.html.Configuration.setBasePath("https://api.aspose.cloud/v3.0");
    com.aspose.html.Configuration.setAuthPath("https://api.aspose.cloud/connect/token");
    com.aspose.html.Configuration.setUserAgent("WebKit");
    com.aspose.html.Configuration.setDebug(true);
		
    String name = "Simple.html";// inpit Document name.
		    	
    Integer width = 800; // Resulting image width.
    Integer height = 1000; // Resulting image height.
    Integer leftMargin = 10; // Left resulting image margin.
    Integer rightMargin = 10; // Right resulting image margin.
    Integer topMargin = 10; // Top resulting image margin.
    Integer bottomMargin = 10; // Bottom resulting image margin.
    String storage = null; // Name of the storage.
    File f = new File("/Users/nayyershahbaz/Documents/"+name);
    if(!f.exists()){
	System.out.println("file not found");
	}
    RequestBody requestBody = RequestBody.create( MediaType.parse("multipart/form-data"), f);
    MultipartBody.Part file = MultipartBody.Part.createFormData("file", f.getName(), requestBody);
				
    try {			
	ConversionApi api = new com.aspose.html.ApiClient().createService(ConversionApi.class);
	com.aspose.html.api.StorageApi storageApi = new com.aspose.html.ApiClient().createService(com.aspose.html.api.StorageApi.class);
		        
        Call<ResponseBody> call2 = api.PostConvertDocumentInRequestToPdf("resultantFile.pdf", file, width, height, leftMargin, rightMargin, topMargin, bottomMargin);
	retrofit2.Response<ResponseBody> res = call2.execute();
	ResponseBody resultant = res.body();
      	call2 = storageApi.downloadFile("resultantFile.pdf", null, storage);
      	checkAndSave(call2, "resultantFile.pdf");
        } catch (Exception e) {
	System.err.println("Exception during file processing...");
	e.printStackTrace();
	}
    } // main ends here
	
public static void checkAndSave(Call<ResponseBody> call, String fileName) throws IOException 
{
    retrofit2.Response<ResponseBody> res = call.execute();
    ResponseBody answer = res.body();
    //Lưu vào thư mục kiểm tra
    boolean result = saveToDisc(answer, fileName);
}
  
public static boolean saveToDisc(ResponseBody body, String fileName) 
{
    File savedFile = new File("/Users/nayyershahbaz/Documents/"+fileName);
    try (InputStream inputStream = body.byteStream();
    OutputStream outputStream = new FileOutputStream(savedFile))
    {
    	byte[] fileReader = new byte[4096];
	long fileSizeDownloaded = 0;

	while (true) {
	int read = inputStream.read(fileReader);
	if (read == -1) break;

	outputStream.write(fileReader, 0, read);
	fileSizeDownloaded += read;
	}
	outputStream.flush();
	return true;

    } catch (Exception e) {
	e.printStackTrace();
	return false;
    }
} // saveToDisc ends here

}

Phần kết luận

Trong bài viết này, chúng ta đã tìm hiểu các bước về cách chuyển đổi trang web sang PDF bằng Java SDK. Chúng tôi đã quan sát thấy rằng với ít dòng mã hơn, toàn bộ HTML được hiển thị thành định dạng PDF với độ trung thực hoàn toàn. Ngoài định dạng PDF, API cũng cho phép bạn thực hiện các hoạt động chuyển đổi HTML sang JPG, HTML sang PNG, HTML sang TIFF, HTML sang BMP và HTML sang GIF. Tương tự như vậy, chúng ta có thể chuyển đổi tệp Markdown sang HTML hoặc chuyển đổi định dạng MHTML sang HTML bằng cùng một API.

Trong trường hợp bạn gặp bất kỳ vấn đề nào khi sử dụng API, vui lòng liên hệ với chúng tôi qua diễn đàn hỗ trợ sản phẩm miễn phí.

Liên kết liên quan

Chúng tôi khuyên bạn nên truy cập các liên kết sau để tìm hiểu thêm về