HyperText Markup Language (HTML) é uma linguagem de marcação padrão para criação de páginas da web. Permite a criação e estruturação de seções, parágrafos e links utilizando elementos/tags HTML. E caso algumas fontes personalizadas sejam usadas em um arquivo HTML ou qualquer objeto dinâmico seja referenciado que exija uma conexão ativa com a máquina/servidor de origem, há chances de comprometer a fidelidade do documento. Por outro lado, em XML Paper Specification(XPS), os elementos da página são definidos independentemente de um determinado sistema operacional, impressora ou aplicativo de visualização. Portanto, uma abordagem inteligente é converter HTML para o formato XPS.
API de conversão HTML
Aspose.HTML Cloud SDK for Java é uma API leve baseada em arquitetura REST que fornece os recursos para criar, manipular e converter arquivos HTML para PDF, DOCX, TIFF, JPEG , etc. Também suporta a conversão de HTML para XPS. Portanto, primeiro precisamos adicionar os seguintes detalhes no pom.xml do projeto do tipo de construção Maven para incluir o SDK em nosso projeto Java.
<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>
Após a instalação, a próxima etapa é uma assinatura gratuita de nossos serviços em nuvem por meio do painel Aspose.Cloud usando o GitHub ou a conta do Google. Ou simplesmente crie uma nova conta e obtenha os detalhes de suas credenciais de cliente.
Converter HTML para XPS em Java
Siga as instruções especificadas abaixo para desenvolver um conversor de HTML para XPS.
- Em primeiro lugar, precisamos especificar os detalhes dos métodos Configuration.setAPPSID e Configuration.setAPIKEY
- Em segundo lugar, definimos detalhes para setBasePath(..), setAuthPath(..) e especificamos setUserAgent(…) como WebKit
- Em terceiro lugar, para nossa própria ajuda, vamos definir setDebug(..) como true
- Agora crie um objeto da classe ConversionApi
- Especifique os detalhes da margem e o nome das informações do arquivo resultante
- Por fim, chame o método GetConvertDocumentToXps(…) que requer a entrada de nome HTML, dimensões e detalhes de margem como argumentos
// para mais exemplos, visite https://github.com/aspose-html-cloud/aspose-html-cloud-java
try
{
// Obtenha ClientID e ClientSecret em https://dashboard.aspose.cloud/
String clientId = "bbf94a2c-6d7e-4020-b4d2-b9809741374e";
String clientSecret = "1c9379bb7d701c26cc87e741a29987bb";
// detalhes para invocação da API
com.aspose.html.Configuration.setAPP_SID(clientId);
com.aspose.html.Configuration.setAPI_KEY(clientSecret);
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);
// Crie um objeto de Aspose.HTML Cloud API
com.aspose.html.api.ConversionApi htmlApi = new ApiClient().createService(ConversionApi.class);
// O documento html do armazenamento em nuvem
String name = "list.html";
// formato de imagem resultante
String outFormat = "PNG";
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.
Integer resolution = 300; // Resolution of resulting image.
String folder = null; // The folder in the storage. Should exist.
String storage = "Internal"; // Name of the storage. null
// Chamar a API para conversão de HTML para XPS
retrofit2.Call<okhttp3.ResponseBody> call = htmlApi.GetConvertDocumentToXps(name, width, height, leftMargin, rightMargin, topMargin, bottomMargin, folder, storage);
System.out.println("HTML to XPS conversion sucessfull !");
}catch(Exception ex)
{
System.out.println(ex);
}
O código acima retorna o resultado no fluxo de resposta, portanto, para salvar a saída em uma unidade local, podemos considerar o uso do seguinte método personalizado.
/*
* Método que usa ResponseBody e o nome do arquivo resultante como argumentos
*/
public static void checkAndSave(retrofit2.Call<okhttp3.ResponseBody> call, String fileName) throws IOException
{
// Envie a solicitação de forma síncrona e retorne sua resposta.
retrofit2.Response<okhttp3.ResponseBody> res = call.execute();
// O corpo de resposta desserializado de uma resposta bem-sucedida
okhttp3.ResponseBody answer = res.body();
//Salvar no diretório de teste
boolean result = saveToDisc(answer, fileName);
// validar se o valor do resultado é verdadeiro (etapa opcional)
Assert.assertTrue(result);
}
/*
*
* Chame este método para salvar o conteúdo da resposta como arquivo na unidade local
*
*/
public static boolean saveToDisc(okhttp3.ResponseBody body, String fileName)
{
// criar objeto de arquivo indicando a localização do arquivo resultante
File savedFile = new File("c:\\Downloads\\"+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;
// salvar o fluxo de arquivo na unidade local
outputStream.write(fileReader, 0, read);
fileSizeDownloaded += read;
}
// limpe a instância do fluxo de saída
outputStream.flush();
// retornar verdadeiro como arquivo salvo com sucesso
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
} // saveToDisc ends here
Os arquivos de amostra usados no exemplo acima podem ser baixados de list.html e resultantFile.xps.
HTML para XPS usando comandos cURL
As APIs REST também podem ser acessadas por meio de comandos cURL, portanto, nesta seção, aprenderemos as etapas de como realizar a conversão de HTML para XPS usando o comando cURL. Agora, como pré-requisito, precisamos primeiro gerar um JSON Web Token (JWT) com base em suas credenciais de cliente individuais. Execute o seguinte comando para gerar o token JWT.
curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=bbf94a2c-6d7e-4020-b4d2-b9809741374e&client_secret=1c9379bb7d701c26cc87e741a29987bb" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"
Agora que temos o token JWT, execute o seguinte comando no terminal para realizar a conversão de HTML para XPS.
curl -v -X GET "https://api.aspose.cloud/html/list.html/convert/xps" \
-H "accept: multipart/form-data" \
-H "authorization: Bearer <JWT Token>" \
-o final.xps
Conclusão
Este artigo explicou os detalhes para converter HTML em XPS usando a API REST. Aprendemos as etapas para converter HTML em XPS usando trechos de código Java, bem como por meio de comandos cURL. Além disso, observe que a [Documentação] do produto 12 é uma ótima fonte para conhecer os incríveis recursos oferecidos pela API. Além disso, se você encontrar algum problema ao usar a API, sinta-se à vontade para entrar em contato com o Fórum de suporte gratuito ao produto.
Artigos relacionados
Também recomendamos visitar os seguintes blogs para obter mais detalhes sobre: