конвертировать html в pdf

Как конвертировать HTML в PDF | HTML в PDF онлайн

HTML — ведущий формат файла для веб-разработки, и большинство современных веб-браузеров поддерживают спецификации HTML. Хотя он не зависит от платформы и может просматриваться в любой операционной системе, он также подвержен вредоносным скриптам и не может легко распространяться через Интернет. Поэтому, чтобы избежать таких обстоятельств и для долгосрочного архивирования, мы сохраняем веб-страницу как PDF(Portable Document Format).Поэтому в этой статье мы рассмотрим шаги по конвертации HTML в PDF с помощью Java REST API.

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

Aspose.HTML Cloud SDK для Java позволяет вам выполнять операции по обработке HTML в приложениях Java. Мы также можем преобразовывать HTML в форматы документов с фиксированной компоновкой (PDF или XPS).Поэтому для выполнения преобразования мы можем загрузить исходный HTML (XHTML, MHTML, EPUB, Markdown) из облачного хранилища или предоставить URL-адрес веб-страницы. Теперь, чтобы использовать SDK, добавьте следующую зависимость в pom.xml вашего проекта сборки maven, чтобы можно было добавить aspose-html.jar в проект:

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

Конвертировать HTML в PDF на Java

Чтобы преобразовать веб-страницу в PDF-файл в приложении Java, выполните указанные ниже действия.

  • Прежде всего, нам необходимо указать данные для Configuration.setAPPSID.
  • Во-вторых, мы указываем информацию Configuration.setAPIKEY.
  • В-третьих, мы задаем параметры setBasePath(..).
  • Затем нам нужно указать данные setAuthPath(..).
  • Установите setUserAgent(…) как WebKit.
  • Для нашей же собственной выгоды мы установим setDebug(..) как true.
  • API также позволяет нам указывать параметры полей для результирующего файла.
  • Следующим шагом является чтение входного HTML-файла и загрузка его в экземпляр File.
  • Теперь нам нужно создать экземпляр класса RequestBody и проанализировать медиаданные как «multipart/form-data».
  • Создайте объект класса ConversionApi.
  • Поскольку мы собираемся загрузить файл в облачное хранилище, нам также необходимо создать экземпляр StorageApi.
  • Теперь нам нужно вызвать PostConvertDocumentInRequestToPdf(..) для инициирования процесса конвертации. Этот метод принимает в качестве аргументов имя входного файла, имя результирующего файла и поля и размеры результирующего файла.
  • После преобразования результат возвращается в объект Stream, содержащий необработанные байты тела ответа.
  • Теперь нам нужно извлечь десериализованное тело ответа успешного ответа в объект ResponseBody.
  • Загрузите полученный файл из облачного хранилища в объект ResponseBody.
  • Затем, наконец, мы вызовем наш пользовательский метод для сохранения полученного PDF-документа на локальном системном диске.
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();
    //Сохранить в тестовом каталоге
    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

}

Заключение

В этой статье мы изучили шаги по конвертации веб-страницы в PDF с помощью Java SDK. Мы заметили, что при меньшем количестве строк кода полный HTML преобразуется в формат PDF с полной точностью. Помимо формата PDF, API также позволяет вам выполнять операции конвертации HTML в JPG, HTML в PNG, HTML в TIFF, HTML в BMP и HTML в GIF. Аналогичным образом мы можем конвертировать файл Markdown в HTML или конвертировать MHTML в формат HTML с помощью того же API.

Если у вас возникнут какие-либо проблемы при использовании API, свяжитесь с нами через бесплатный форум поддержки продукта.

Ссылки по теме

Мы рекомендуем посетить следующие ссылки, чтобы узнать больше о