HTML은 웹 개발을 위한 주요 파일 형식이며, 대부분의 최신 웹 브라우저는 HTML 사양을 지원합니다. 플랫폼에 독립적이며 모든 운영 체제에서 볼 수 있지만 악성 스크립트에 취약하고 인터넷을 통해 쉽게 공유할 수 없습니다. 따라서 이러한 상황을 피하고 장기 보관을 위해 웹 페이지를 PDF(Portable Document Format)로 저장합니다. 따라서 이 문서에서는 Java REST API를 사용하여 HTML을 PDF로 변환하는 방법에 대한 단계를 설명합니다.
HTML에서 PDF로 변환 API
Aspose.HTML Cloud SDK for Java를 사용하면 Java 애플리케이션 내에서 HTML 조작 작업을 수행할 수 있습니다. HTML을 고정 레이아웃 문서 형식(PDF 또는 XPS)으로 변환할 수도 있습니다. 따라서 변환을 수행하려면 클라우드 저장소에서 소스 HTML(XHTML, MHTML, EPUB, Markdown)을 로드하거나 웹 페이지의 URL을 제공할 수 있습니다. 이제 SDK를 사용하려면 maven 빌드 프로젝트의 pom.xml에 다음 종속성을 추가하여 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>
Java에서 HTML을 PDF로 변환
Java 애플리케이션에서 웹페이지를 PDF로 변환하려면 아래 단계를 따르세요.
- 우선, 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
}
결론
이 문서에서는 Java SDK를 사용하여 웹페이지를 PDF로 변환하는 방법에 대한 단계를 알아보았습니다. 코드 줄이 적으면서 전체 HTML이 완벽한 충실도로 PDF 형식으로 렌더링되는 것을 확인했습니다. PDF 형식 외에도 API를 사용하면 HTML에서 JPG, HTML에서 PNG, HTML에서 TIFF, HTML에서 BMP, HTML에서 GIF로 변환 작업을 수행할 수 있습니다. 마찬가지로 동일한 API를 사용하여 Markdown 파일을 HTML로 변환하거나 MHTML을 HTML 형식으로 변환할 수 있습니다.
API 사용 중 문제가 발생할 경우 무료 제품 지원 포럼을 통해 언제든지 문의해 주시기 바랍니다.
관련 링크
자세한 내용을 알아보려면 다음 링크를 방문하는 것이 좋습니다.