HTML в XPS

Перетворення HTML на XPS

Мова розмітки гіпертексту (HTML) — стандартна мова розмітки для створення веб-сторінок. Він дозволяє створювати та структурувати розділи, абзаци та посилання за допомогою елементів/тегів HTML. І якщо деякі користувальницькі шрифти використовуються у файлі HTML або є посилання на будь-який динамічний об’єкт, який потребує активного підключення до вихідного комп’ютера/сервера, існує ймовірність скомпрометувати точність документа. З іншого боку, у специфікації паперу XML (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();
	    
	    // повернути істину, оскільки файл збережено успішно
	    return true;
	    } catch (Exception e) {
		e.printStackTrace();
		return false;
	    }
	} // saveToDisc ends here
HTML в XPS

Зображення 1: попередній перегляд HTML у XPS

Зразки файлів, використаних у наведеному вище прикладі, можна завантажити з list.html і resultantFile.xps.

HTML у XPS за допомогою команд cURL

До REST API також можна отримати доступ за допомогою команд 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, будь ласка, зв’яжіться з безкоштовним форумом підтримки продуктів.

Схожі статті

Ми також рекомендуємо відвідати наступні блоги, щоб дізнатися більше про: