Το HTML είναι μια κορυφαία μορφή αρχείου για την ανάπτυξη ιστού και η πλειοψηφία των σύγχρονων προγραμμάτων περιήγησης ιστού υποστηρίζει προδιαγραφές HTML. Αν και είναι ανεξάρτητο από την πλατφόρμα και μπορεί να προβληθεί σε οποιοδήποτε λειτουργικό σύστημα, είναι επίσης επιρρεπείς σε κακόβουλα σενάρια και δεν μπορούν να κοινοποιηθούν εύκολα μέσω του Διαδικτύου. Έτσι, για να αποφύγουμε τέτοιες περιστάσεις και για μακροπρόθεσμη αρχειοθέτηση, αποθηκεύουμε μια ιστοσελίδα ως PDF(Portable Document Format).Έτσι, σε αυτό το άρθρο, θα συζητήσουμε τα βήματα σχετικά με τον τρόπο μετατροπής HTML σε PDF χρησιμοποιώντας το Java REST API.
API μετατροπής HTML σε PDF
Το Aspose.HTML Cloud SDK για Java σάς δίνει τη δυνατότητα να εκτελείτε λειτουργίες χειρισμού HTML εντός εφαρμογών Java. Μπορούμε επίσης να μετατρέψουμε HTML σε μορφές εγγράφων σταθερής διάταξης (PDF ή XPS).Έτσι, για να πραγματοποιήσουμε τη μετατροπή, μπορούμε να φορτώσουμε την πηγή HTML (XHTML, MHTML, EPUB, Markdown) από το χώρο αποθήκευσης cloud ή να παρέχουμε τη διεύθυνση URL μιας ιστοσελίδας. Τώρα, για να χρησιμοποιήσετε το SDK, προσθέστε την ακόλουθη εξάρτηση στο pom.xml του έργου κατασκευής maven, ώστε το 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(..) ως true.
- Το API μας επιτρέπει επίσης να καθορίσουμε τις λεπτομέρειες περιθωρίου για το αρχείο που προκύπτει.
- Το επόμενο βήμα είναι να διαβάσετε το αρχείο εισόδου HTML και να το φορτώσετε στην παρουσία του αρχείου.
- Τώρα πρέπει να δημιουργήσουμε ένα στιγμιότυπο της κλάσης RequestBody και να αναλύσουμε τα μέσα ως “πολυμερή/φόρμα-δεδομένα”.
- Δημιουργήστε ένα αντικείμενο κλάσης ConversionApi.
- Εφόσον πρόκειται να ανεβάσουμε το αρχείο στον χώρο αποθήκευσης cloud, πρέπει επίσης να δημιουργήσουμε μια παρουσία του StorageApi.
- Τώρα πρέπει να καλέσουμε το PostConvertDocumentInRequestToPdf(..) για να ξεκινήσει η διαδικασία μετατροπής. Αυτή η μέθοδος δέχεται ως ορίσματα το όνομα αρχείου εισόδου, το όνομα αρχείου που προκύπτει και τα στοιχεία περιθωρίου και διαστάσεων του αρχείου που προκύπτει.
- Μετά τη μετατροπή, το αποτέλεσμα επιστρέφεται στο αντικείμενο Stream που περιέχει ακατέργαστα byte του σώματος απόκρισης.
- Τώρα πρέπει να ανακτήσουμε το αφηρημένο σώμα απόκρισης της επιτυχημένης απόκρισης στο αντικείμενο ResponseBody.
- Πραγματοποιήστε λήψη του προκύπτοντος αρχείου από την αποθήκευση cloud στο αντικείμενο 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, μη διστάσετε να επικοινωνήσετε μαζί μας μέσω του δωρεάν φόρουμ υποστήριξης προϊόντων.
Σχετικοί Σύνδεσμοι
Συνιστούμε να επισκεφτείτε τους παρακάτω συνδέσμους για να μάθετε περισσότερα