De HTML is een toonaangevend bestandsformaat voor webontwikkeling en de meeste moderne webbrowsers ondersteunen HTML-specificaties. Hoewel het platformonafhankelijk is en op elk besturingssysteem kan worden bekeken, zijn ze ook vatbaar voor schadelijke scripts en kunnen ze niet eenvoudig via internet worden gedeeld. Om dergelijke omstandigheden te voorkomen en voor langdurige archivering, slaan we een webpagina op als PDF(Portable Document Format).In dit artikel bespreken we de stappen voor het converteren van HTML naar PDF met behulp van Java REST API.
HTML naar PDF conversie API
Met Aspose.HTML Cloud SDK voor Java kunt u HTML-manipulatiebewerkingen uitvoeren binnen Java-applicaties. We kunnen HTML ook converteren naar documentformaten met een vaste lay-out (PDF of XPS).Om de conversie uit te voeren, kunnen we de bron-HTML (XHTML, MHTML, EPUB, Markdown) laden vanuit cloudopslag of de URL van een webpagina opgeven. Om de SDK te gebruiken, voegt u de volgende afhankelijkheid toe in pom.xml van uw maven build-project, zodat aspose-html.jar aan het project kan worden toegevoegd:
<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>
Converteer HTML naar PDF in Java
Volg de onderstaande stappen om de webpagina in de Java-toepassing naar PDF te converteren.
- Allereerst moeten we details opgeven voor Configuration.setAPPSID.
- Ten tweede specificeren we de Configuration.setAPIKEY-informatie.
- Ten derde stellen we de setBasePath(..) details in.
- Vervolgens moeten we de setAuthPath(..) details specificeren.
- Stel setUserAgent(…) in als WebKit.
- Voor ons eigen gemak stellen we setDebug(..) in op true.
- Met de API kunnen we ook de margedetails voor het resulterende bestand specificeren.
- De volgende stap is het lezen van het HTML-invoerbestand en het laden ervan in het bestand.
- Nu moeten we een instantie van de RequestBody-klasse maken en de media parseren als “multipart/form-data”.
- Maak een object van de klasse ConversionApi.
- Omdat we het bestand naar de cloudopslag gaan uploaden, moeten we ook een instantie van StorageApi maken.
- Nu moeten we PostConvertDocumentInRequestToPdf(..) aanroepen om het conversieproces te starten. Deze methode accepteert invoerbestandsnaam, resulterende bestandsnaam en resulterende bestandsmarge- en dimensiedetails als argumenten.
- Na de conversie wordt het resultaat teruggestuurd naar het Stream-object, dat de onbewerkte bytes van de antwoordtekst bevat.
- Nu moeten we de gedeserialiseerde antwoordtekst van het succesvolle antwoord ophalen in het ResponseBody-object.
- Download het resulterende bestand vanuit de cloudopslag naar het ResponseBody-object.
- Ten slotte gaan we onze aangepaste methode aanroepen om het resulterende PDF-document op een lokale systeemschijf op te slaan.
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();
//Opslaan in testmap
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
}
Conclusie
In dit artikel hebben we de stappen geleerd om een webpagina te converteren naar PDF met behulp van Java SDK. We hebben gezien dat met minder coderegels de volledige HTML wordt gerenderd naar PDF-formaat met volledige getrouwheid. Naast PDF-formaat stelt de API u ook in staat om HTML naar JPG, HTML naar PNG, HTML naar TIFF, HTML naar BMP en HTML naar GIF conversiebewerkingen uit te voeren. Op dezelfde manier kunnen we een Markdown-bestand converteren naar HTML of MHTML converteren naar HTML-formaat met behulp van dezelfde API.
Mocht u problemen ondervinden bij het gebruik van de API, neem dan gerust contact met ons op via het gratis productondersteuningsforum.
Gerelateerde links
Wij raden u aan de volgende links te bezoeken voor meer informatie over