แปลง HTML เป็น PDF

วิธีแปลง HTML เป็น PDF | HTML เป็น PDF ออนไลน์

HTML เป็นรูปแบบไฟล์หลักสำหรับการพัฒนาเว็บ และเว็บเบราว์เซอร์สมัยใหม่ส่วนใหญ่รองรับข้อกำหนด HTML แม้ว่ารูปแบบไฟล์นี้จะไม่ขึ้นอยู่กับแพลตฟอร์มและสามารถดูได้บนระบบปฏิบัติการใดๆ ก็ตาม แต่รูปแบบไฟล์เหล่านี้ยังมีแนวโน้มที่จะมีสคริปต์ที่เป็นอันตรายและไม่สามารถแชร์ผ่านอินเทอร์เน็ตได้อย่างง่ายดาย ดังนั้น เพื่อหลีกเลี่ยงสถานการณ์ดังกล่าวและเพื่อการเก็บถาวรในระยะยาว เราจึงบันทึกเว็บเพจเป็น PDF(Portable Document Format) ดังนั้น ในบทความนี้ เราจะมาพูดถึงขั้นตอนในการแปลง HTML เป็น PDF โดยใช้ Java REST API

API การแปลง HTML เป็น PDF

Aspose.HTML Cloud SDK for Java ช่วยให้คุณสามารถดำเนินการจัดการ HTML ในแอปพลิเคชัน Java ได้ นอกจากนี้ เรายังสามารถแปลง HTML เป็นรูปแบบเอกสารที่มีเค้าโครงคงที่ (PDF หรือ XPS) ได้ ดังนั้น เพื่อดำเนินการแปลง เราสามารถโหลดซอร์ส HTML(XHTML, MHTML, EPUB, Markdown) จากที่เก็บข้อมูลบนคลาวด์ หรือระบุ URL ของหน้าเว็บได้ ในการใช้ SDK โปรดเพิ่มการอ้างอิงต่อไปนี้ใน pom.xml ของโปรเจ็กต์ maven build ของคุณ เพื่อให้สามารถเพิ่ม aspose-html.jar ลงในโปรเจ็กต์ได้:

<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>

แปลง HTML เป็น PDF ใน Java

โปรดปฏิบัติตามขั้นตอนด้านล่างเพื่อแปลงเว็บเพจเป็น PDF ในแอปพลิเคชัน Java

  • ก่อนอื่น เราต้องระบุรายละเอียดกับ Configuration.setAPPSID
  • ประการที่สอง เราจะระบุข้อมูล Configuration.setAPIKEY
  • ประการที่สาม เรากำหนดรายละเอียด setBasePath(..)
  • จากนั้นเราจะต้องระบุรายละเอียด setAuthPath(..)
  • ตั้งค่า setUserAgent(…) เป็น WebKit
  • สำหรับความช่วยเหลือของเราเอง เราจะตั้งค่า setDebug(..) เป็นจริง
  • นอกจากนี้ API ยังช่วยให้เราสามารถระบุรายละเอียดระยะขอบสำหรับไฟล์ผลลัพธ์ได้
  • ขั้นตอนถัดไปคือการอ่านไฟล์ HTML อินพุตและโหลดลงในอินสแตนซ์ไฟล์
  • ตอนนี้เราต้องสร้างอินสแตนซ์ของคลาส RequestBody และแยกสื่อเป็น “multipart/form-data”
  • สร้างวัตถุของคลาส ConversionApi
  • เนื่องจากเราจะอัปโหลดไฟล์ไปยังที่เก็บข้อมูลบนคลาวด์ ดังนั้นเราจำเป็นต้องสร้างอินสแตนซ์ของ StorageApi ด้วย
  • ตอนนี้เราต้องเรียก PostConvertDocumentInRequestToPdf(..) เพื่อเริ่มกระบวนการแปลง วิธีการนี้รับชื่อไฟล์อินพุต ชื่อไฟล์ผลลัพธ์ และรายละเอียดระยะขอบและมิติของไฟล์ผลลัพธ์เป็นอาร์กิวเมนต์
  • หลังจากการแปลง ผลลัพธ์จะถูกส่งกลับไปยังวัตถุ Stream ซึ่งประกอบด้วยไบต์ดิบของเนื้อหาการตอบสนอง
  • ตอนนี้เราต้องดึงข้อมูลเนื้อหาการตอบสนองที่ผ่านการดีซีเรียลไลซ์ของการตอบสนองที่ประสบความสำเร็จลงในอ็อบเจ็กต์ ResponseBody
  • ดาวน์โหลดไฟล์ผลลัพธ์จากที่เก็บข้อมูลบนคลาวด์ไปยังวัตถุ ResponseBody
  • ในที่สุดเราจะเรียกใช้วิธีการที่กำหนดเองของเราเพื่อบันทึกเอกสาร PDF ที่ได้บนไดรฟ์ระบบภายในเครื่อง
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();
    //บันทึกลงในไดเร็กทอรีทดสอบ
    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

}

บทสรุป

ในบทความนี้ เราได้เรียนรู้ขั้นตอนในการแปลงเว็บเพจเป็น PDF โดยใช้ Java SDK เราพบว่าเมื่อใช้โค้ดเพียงไม่กี่บรรทัด HTML ทั้งหมดจะถูกเรนเดอร์เป็นรูปแบบ PDF ด้วยความถูกต้องสมบูรณ์ นอกจากรูปแบบ PDF แล้ว API ยังช่วยให้คุณแปลง HTML เป็น JPG, HTML เป็น PNG, HTML เป็น TIFF, HTML เป็น BMP และ HTML เป็น GIF ได้ ในทำนองเดียวกัน เราสามารถแปลงไฟล์ Markdown เป็น HTML หรือแปลง MHTML เป็นรูปแบบ HTML โดยใช้ API เดียวกัน

ในกรณีที่คุณพบปัญหาใดๆ ในระหว่างการใช้ API โปรดติดต่อเราผ่าน ฟอรัมสนับสนุนผลิตภัณฑ์ฟรี

ลิงก์ที่เกี่ยวข้อง

เราขอแนะนำให้เยี่ยมชมลิงค์ต่อไปนี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ