HTML è un formato di file leader per lo sviluppo web e la maggior parte dei browser web moderni supporta le specifiche HTML. Sebbene sia indipendente dalla piattaforma e possa essere visualizzato su qualsiasi sistema operativo, è anche soggetto a script dannosi e non può essere facilmente condiviso su Internet. Quindi, per evitare tali circostanze e per l’archiviazione a lungo termine, salviamo una pagina web come PDF(Portable Document Format).Quindi in questo articolo, discuteremo i passaggi su come convertire HTML in PDF utilizzando Java REST API.
API di conversione da HTML a PDF
Aspose.HTML Cloud SDK per Java consente di eseguire operazioni di manipolazione HTML all’interno di applicazioni Java. Possiamo anche convertire HTML in formati di documenti a layout fisso (PDF o XPS).Quindi, per eseguire la conversione, possiamo caricare l’HTML sorgente (XHTML, MHTML, EPUB, Markdown) dall’archiviazione cloud o fornire l’URL di una pagina Web. Ora, per utilizzare l’SDK, aggiungi la seguente dipendenza in pom.xml del tuo progetto di build maven in modo che aspose-html.jar possa essere aggiunto al progetto:
<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>
Convertire HTML in PDF in Java
Per convertire la pagina web in PDF nell’applicazione Java, seguire i passaggi indicati di seguito.
- Per prima cosa dobbiamo specificare i dettagli in Configuration.setAPPSID.
- In secondo luogo, specifichiamo le informazioni Configuration.setAPIKEY.
- In terzo luogo, impostiamo i dettagli setBasePath(..).
- Quindi dobbiamo specificare i dettagli setAuthPath(..).
- Imposta setUserAgent(…) come WebKit.
- Per facilitarci le cose, imposteremo setDebug(..) su true.
- L’API consente anche di specificare i dettagli dei margini per il file risultante.
- Il passo successivo consiste nel leggere il file HTML di input e caricarlo nell’istanza File.
- Ora dobbiamo creare un’istanza della classe RequestBody e analizzare il supporto come “multipart/form-data”.
- Crea un oggetto della classe ConversionApi.
- Poiché caricheremo il file su un archivio cloud, dovremo anche creare un’istanza di StorageApi.
- Ora dobbiamo chiamare PostConvertDocumentInRequestToPdf(..) per avviare il processo di conversione. Questo metodo accetta come argomenti il nome del file di input, il nome del file risultante e i dettagli di margine e dimensioni del file risultante.
- Dopo la conversione, il risultato viene restituito all’oggetto Stream contenente i byte non elaborati del corpo della risposta.
- Ora dobbiamo recuperare il corpo della risposta deserializzata della risposta riuscita nell’oggetto ResponseBody.
- Scarica il file risultante dall’archiviazione cloud nell’oggetto ResponseBody.
- Infine, chiameremo il nostro metodo personalizzato per salvare il documento PDF risultante su un’unità di sistema locale.
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();
//Salva nella directory di prova
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
}
Conclusione
In questo articolo, abbiamo appreso i passaggi per convertire una pagina web in PDF utilizzando Java SDK. Abbiamo osservato che con meno righe di codice, l’HTML completo viene reso in formato PDF con fedeltà completa. Oltre al formato PDF, l’API consente anche di eseguire operazioni di conversione da HTML a JPG, da HTML a PNG, da HTML a TIFF, da HTML a BMP e da HTML a GIF. Allo stesso modo, possiamo convertire un file Markdown in HTML o convertire MHTML in formato HTML utilizzando la stessa API.
In caso di problemi durante l’utilizzo dell’API, non esitate a contattarci tramite il forum di supporto prodotto gratuito.
Link correlati
Ti consigliamo di visitare i seguenti link per saperne di più