convertir html a pdf

Cómo convertir HTML a PDF | HTML a PDF en línea

El formato HTML 1 es el formato de archivo más utilizado en el desarrollo web y la mayoría de los navegadores web modernos admiten especificaciones HTML. Aunque no depende de la plataforma y se puede ver en cualquier sistema operativo, también es propenso a scripts maliciosos y no se puede compartir fácilmente a través de Internet. Por lo tanto, para evitar tales circunstancias y para el archivo a largo plazo, guardamos una página web como PDF(formato de documento portátil).En este artículo, analizaremos los pasos para convertir HTML a PDF utilizando la API REST de Java.

API de conversión de HTML a PDF

Aspose.HTML Cloud SDK for Java le permite realizar operaciones de manipulación de HTML dentro de aplicaciones Java. También podemos convertir HTML a formatos de documentos de diseño fijo (PDF o XPS).Por lo tanto, para realizar la conversión, podemos cargar el HTML de origen (XHTML, MHTML, EPUB, Markdown) desde el almacenamiento en la nube o proporcionar la URL de una página web. Ahora, para usar el SDK, agregue la siguiente dependencia en pom.xml de su proyecto de compilación de Maven para que se pueda agregar aspose-html.jar al proyecto:

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

Convertir HTML a PDF en Java

Siga los pasos que se indican a continuación para convertir la página web a PDF en la aplicación Java.

  • En primer lugar, debemos especificar detalles en Configuration.setAPPSID.
  • En segundo lugar, especificamos la información de Configuration.setAPIKEY.
  • En tercer lugar, configuramos los detalles de setBasePath(..).
  • Luego necesitamos especificar los detalles de setAuthPath(..).
  • Establezca setUserAgent(…) como WebKit.
  • Para nuestra propia ayuda, vamos a establecer setDebug(..) como verdadero.
  • La API también nos permite especificar los detalles del margen para el archivo resultante.
  • El siguiente paso es leer el archivo HTML de entrada y cargarlo en la instancia de Archivo.
  • Ahora necesitamos crear una instancia de la clase RequestBody y analizar el medio como “multipart/form-data”.
  • Crea un objeto de la clase ConversionApi.
  • Dado que vamos a cargar el archivo al almacenamiento en la nube, también necesitamos crear una instancia de StorageApi.
  • Ahora debemos llamar a PostConvertDocumentInRequestToPdf(..) para iniciar el proceso de conversión. Este método acepta el nombre del archivo de entrada, el nombre del archivo resultante y los detalles de márgenes y dimensiones del archivo resultante como argumentos.
  • Después de la conversión, el resultado se devuelve al objeto Stream que contiene bytes sin procesar del cuerpo de la respuesta.
  • Ahora necesitamos recuperar el cuerpo de respuesta deserializado de la respuesta exitosa en el objeto ResponseBody.
  • Descargue el archivo resultante del almacenamiento en la nube al objeto ResponseBody.
  • Luego finalmente vamos a llamar a nuestro método personalizado para guardar el documento PDF resultante en una unidad del sistema local.
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();
    //Guardar en el directorio de prueba
    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

}

Conclusión

En este artículo, hemos aprendido los pasos para convertir una página web a PDF utilizando el SDK de Java. Hemos observado que con menos líneas de código, el HTML completo se convierte en formato PDF con total fidelidad. Además del formato PDF, la API también permite realizar operaciones de conversión de HTML a JPG, HTML a PNG, HTML a TIFF, HTML a BMP y HTML a GIF. De manera similar, podemos convertir un archivo Markdown a HTML o convertir MHTML a formato HTML utilizando la misma API.

En caso de que surja algún problema al utilizar la API, no dude en contactarnos a través del foro de soporte de productos gratuito.

Enlaces relacionados

Te recomendamos visitar los siguientes enlaces para conocer más sobre