O HTML é um formato de arquivo líder para desenvolvimento web, e a maioria dos navegadores modernos suporta especificações HTML. Embora seja independente de plataforma e possa ser visualizado em qualquer sistema operacional, eles também são propensos a scripts maliciosos e não podem ser facilmente compartilhados pela internet. Então, para evitar tais circunstâncias e para arquivamento de longo prazo, salvamos uma página da web como PDF(Portable Document Format).Então, neste artigo, vamos discutir as etapas sobre como converter HTML para PDF usando Java REST API.
API de conversão de HTML para PDF
Aspose.HTML Cloud SDK para Java permite que você execute operações de manipulação de HTML em aplicativos Java. Também podemos converter HTML para formatos de documento de layout fixo (PDF ou XPS).Portanto, para executar a conversão, podemos carregar o HTML de origem (XHTML, MHTML, EPUB, Markdown) do armazenamento em nuvem ou fornecer a URL de uma página da web. Agora, para usar o SDK, adicione a seguinte dependência em pom.xml do seu projeto de construção maven para que aspose-html.jar possa ser adicionado ao projeto:
<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>
Converter HTML para PDF em Java
Siga os passos abaixo para converter a página da web em PDF no aplicativo Java.
- Primeiro, precisamos especificar detalhes em Configuration.setAPPSID.
- Em segundo lugar, especificamos as informações Configuration.setAPIKEY.
- Em terceiro lugar, definimos os detalhes de setBasePath(..).
- Então precisamos especificar os detalhes de setAuthPath(..).
- Defina setUserAgent(…) como WebKit.
- Para nossa própria ajuda, vamos definir setDebug(..) como verdadeiro.
- A API também nos permite especificar os detalhes de margem do arquivo resultante.
- O próximo passo é ler o arquivo HTML de entrada e carregá-lo na instância File.
- Agora precisamos criar uma instância da classe RequestBody e analisar a mídia como “multipart/form-data”.
- Crie um objeto da classe ConversionApi.
- Como vamos enviar o arquivo para o armazenamento em nuvem, também precisamos criar uma instância do StorageApi.
- Agora precisamos chamar PostConvertDocumentInRequestToPdf(..) para iniciar o processo de conversão. Este método aceita nome do arquivo de entrada, nome do arquivo resultante e detalhes de margem e dimensões do arquivo resultante como argumentos.
- Após a conversão, o resultado é retornado ao objeto Stream contendo bytes brutos do corpo da resposta.
- Agora precisamos recuperar o corpo de resposta desserializado da resposta bem-sucedida no objeto ResponseBody.
- Baixe o arquivo resultante do armazenamento em nuvem para o objeto ResponseBody.
- Por fim, chamaremos nosso método personalizado para salvar o documento PDF resultante em uma unidade de 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();
//Salvar no diretório de teste
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
}
Conclusão
Neste artigo, aprendemos as etapas sobre como converter uma página da web em PDF usando o Java SDK. Observamos que, com menos linhas de código, o HTML completo é renderizado para o formato PDF com fidelidade completa. Além do formato PDF, a API também permite que você execute operações de conversão de HTML para JPG, HTML para PNG, HTML para TIFF, HTML para BMP e HTML para GIF. Da mesma forma, podemos converter um arquivo Markdown para HTML ou converter MHTML para o formato HTML usando a mesma API.
Caso você encontre algum problema ao usar a API, sinta-se à vontade para entrar em contato conosco através do fórum de suporte gratuito ao produto.
Links relacionados
Recomendamos visitar os seguintes links para saber mais sobre