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, свяжитесь с нами через бесплатный форум поддержки продукта.
Ссылки по теме
Мы рекомендуем посетить следующие ссылки, чтобы узнать больше о