HTML в XPS

Преобразование HTML в XPS

Язык гипертекстовой разметки (HTML) — это стандартный язык разметки для создания веб-страниц. Он позволяет создавать и структурировать разделы, абзацы и ссылки с использованием элементов/тегов HTML. И в случае использования некоторых пользовательских шрифтов в файле HTML или ссылки на какой-либо динамический объект, который требует активного подключения к исходному компьютеру/серверу, существует вероятность нарушения точности документа. С другой стороны, в спецификации XML Paper (XPS) элементы страницы определяются независимо от конкретной операционной системы, принтера или приложения просмотра. Поэтому разумным подходом является преобразование HTML в формат XPS.

API преобразования HTML

Aspose.HTML Cloud SDK для Java — это облегченный API на основе архитектуры REST, предоставляющий возможности для создания, обработки и преобразования файлов HTML в форматы PDF, DOCX, TIFF, JPEG и т. д. Он также поддерживает преобразование HTML в XPS. Итак, во-первых, нам нужно добавить следующие детали в pom.xml проекта типа сборки Maven, чтобы включить SDK в наш проект Java.

<repositories> 
    <repository>
        <id>aspose-cloud</id>
        <name>artifact.aspose-cloud-releases</name>
        <url>http://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>

После установки следующим шагом будет бесплатная подписка на наши облачные сервисы через панель управления Aspose.Cloud с использованием GitHub или учетной записи Google. Или просто создайте новую учетную запись и получите свои учетные данные клиента.

Преобразование HTML в XPS в Java

Пожалуйста, следуйте приведенным ниже инструкциям, чтобы разработать конвертер HTML в XPS.

  • Прежде всего, нам нужно указать детали для методов Configuration.setAPPSID и Configuration.setAPIKEY.
  • Во-вторых, мы устанавливаем детали для setBasePath(..), setAuthPath(..) и указываем setUserAgent(…) как WebKit
  • В-третьих, для нашей собственной помощи мы собираемся установить setDebug(..) как true
  • Теперь создайте объект класса ConversionApi.
  • Укажите сведения о полях и имя для информации для результирующего файла.
  • Наконец, вызовите метод GetConvertDocumentToXps(…), который требует ввода имени HTML, размеров и сведений о полях в качестве аргументов.
// дополнительные примеры см. на странице https://github.com/aspose-html-cloud/aspose-html-cloud-java.

try
    {
    // Получите ClientID и ClientSecret с https://dashboard.aspose.cloud/
    String clientId = "bbf94a2c-6d7e-4020-b4d2-b9809741374e";
    String clientSecret = "1c9379bb7d701c26cc87e741a29987bb";
  
    // подробности для вызова 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);
        
    // Создайте объект Aspose.HTML Cloud API
    com.aspose.html.api.ConversionApi htmlApi = new ApiClient().createService(ConversionApi.class);
     	
    // HTML-документ из облачного хранилища
    String name = "list.html";
    // результирующий формат изображения
    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
    	
    // Вызов API для преобразования HTML в 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);
    }

Приведенный выше код возвращает результат в потоке ответов, поэтому, чтобы сохранить вывод на локальном диске, мы можем рассмотреть возможность использования следующего пользовательского метода.

/*
* Метод, принимающий ResponseBody и результирующее имя файла в качестве аргументов
*/
public static void checkAndSave(retrofit2.Call<okhttp3.ResponseBody> call, String fileName) throws IOException 
	{
	    // Синхронно отправьте запрос и верните ответ.
	    retrofit2.Response<okhttp3.ResponseBody> res = call.execute();
	    
	    // Десериализованное тело ответа успешного ответа
	    okhttp3.ResponseBody answer = res.body();
	    
	    //Сохранить в тестовую директорию
	    boolean result = saveToDisc(answer, fileName);
	    
	    // подтвердить, что значение результата истинно (необязательный шаг)
	    Assert.assertTrue(result);
	}
	
  /*
  *
  * Вызовите этот метод, чтобы сохранить содержимое ответа в виде файла на локальном диске.
  *
  */ 
	public static boolean saveToDisc(okhttp3.ResponseBody body, String fileName) 
	{
            // создать файловый объект, указывающий местоположение результирующего файла
	    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;

                // сохранить файловый поток на локальный диск
		outputStream.write(fileReader, 0, read);
		fileSizeDownloaded += read;
            }
	    // очистить экземпляр выходного потока
	    outputStream.flush();
	    
	    // вернуть true, поскольку файл успешно сохранен
	    return true;
	    } catch (Exception e) {
		e.printStackTrace();
		return false;
	    }
	} // saveToDisc ends here
HTML в XPS

Изображение 1: предварительный просмотр HTML в XPS

Образцы файлов, использованные в приведенном выше примере, можно загрузить из list.html и resultantFile.xps.

HTML в XPS с использованием команд cURL

Доступ к API REST также можно получить с помощью команд cURL, поэтому в этом разделе мы собираемся изучить шаги по выполнению преобразования HTML в XPS с помощью команды cURL. Теперь в качестве предварительного условия нам нужно сначала сгенерировать JSON Web Token (JWT) на основе ваших индивидуальных учетных данных клиента. Пожалуйста, выполните следующую команду, чтобы сгенерировать токен 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"

Теперь, когда у нас есть токен JWT, выполните следующую команду на терминале, чтобы выполнить преобразование HTML в 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

Заключение

В этой статье объясняются подробности преобразования HTML в XPS с помощью REST API. Мы узнали, как преобразовать HTML в XPS с помощью фрагментов кода Java, а также с помощью команд cURL. Кроме того, обратите внимание, что Продукт Документация является отличным источником информации об удивительных возможностях, предлагаемых API. Кроме того, если у вас возникнут какие-либо проблемы при использовании API, обращайтесь на бесплатный форум поддержки продуктов.

Статьи по Теме

Мы также рекомендуем посетить следующие блоги для получения дополнительной информации о: