HTML یک فرمت فایل پیشرو برای توسعه وب است و اکثر مرورگرهای وب مدرن از مشخصات HTML پشتیبانی می کنند. اگرچه مستقل از پلتفرم است و می توان آن را در هر سیستم عاملی مشاهده کرد، اما آنها همچنین مستعد اسکریپت های مخرب هستند و نمی توانند به راحتی از طریق اینترنت به اشتراک گذاشته شوند. بنابراین، برای جلوگیری از چنین شرایطی و برای آرشیو طولانی مدت، یک صفحه وب را به عنوان PDF(قالب سند قابل حمل) ذخیره می کنیم. بنابراین در این مقاله قصد داریم مراحل تبدیل HTML به PDF با استفاده از Java REST API را مورد بحث قرار دهیم.
API تبدیل HTML به PDF
Aspose.HTML Cloud SDK for 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(..) را درست تنظیم کنیم.
- API همچنین به ما اجازه می دهد تا جزئیات حاشیه را برای فایل حاصل مشخص کنیم.
- مرحله بعدی خواندن فایل HTML ورودی و بارگذاری آن در نمونه File است.
- اکنون باید یک نمونه از کلاس RequestBody ایجاد کنیم و رسانه را به عنوان “multipart/form-data” تجزیه کنیم.
- یک شی از کلاس ConversionApi ایجاد کنید.
- از آنجایی که ما قصد داریم فایل را در فضای ذخیره سازی ابری آپلود کنیم، بنابراین باید یک نمونه از StorageApi نیز ایجاد کنیم.
- اکنون باید PostConvertDocumentInRequestToPdf(..) را فراخوانی کنیم تا فرآیند تبدیل را آغاز کنیم. این روش نام فایل ورودی، نام فایل حاصل و جزئیات حاشیه و ابعاد فایل حاصل را به عنوان آرگومان می پذیرد.
- پس از تبدیل، نتیجه به شی Stream حاوی بایت های خام بدنه پاسخ بازگردانده می شود.
- اکنون باید بدنه پاسخ ناموفق پاسخ موفق را در شی ResponseBody بازیابی کنیم.
- فایل حاصل را از فضای ذخیره سازی ابری به شی ResponseBody دانلود کنید.
- سپس در نهایت، میخواهیم روش سفارشی خود را برای ذخیره سند پیدیاف حاصل در یک درایو سیستم محلی فراخوانی کنیم.
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 را با استفاده از همان API به فرمت HTML تبدیل کنیم.
اگر هنگام استفاده از API با مشکلی مواجه شدید، لطفاً از طریق [تالار گفتمان پشتیبانی رایگان محصول] با ما تماس بگیرید.
لینک های مرتبط
توصیه می کنیم برای کسب اطلاعات بیشتر به لینک های زیر مراجعه کنید