HyperText Markup Language (HTML) забони стандартии аломатгузорӣ барои эҷоди саҳифаи веб мебошад. Он имкон медиҳад, ки бахшҳо, параграфҳо ва истинодҳо бо истифода аз унсурҳои/тегҳои HTML сохтан ва сохтори онро фароҳам оранд. Ва агар дар файли HTML баъзе ҳуруфҳои фармоишӣ истифода шаванд ё ба ягон объекти динамикӣ истинод карда шавад, ки пайвасти фаъол ба мошини/сервери манбаъро талаб мекунад, имкони халалдор кардани эътимоднокии ҳуҷҷат вуҷуд дорад. Аз тарафи дигар, дар XML Paper Specification(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>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>
Пас аз насб, қадами навбатӣ обунаи ройгон ба хидматҳои абрии мо тавассути Aspose.Cloud бо истифода аз GitHub ё ҳисоби Google мебошад. Ё, танҳо эҷоди ҳисоби нав ва тафсилоти эътимодномаи муштарии худро дастрас кунед.
Табдил додани HTML ба XPS дар Java
Лутфан дастурҳои дар зер нишондодашударо барои таҳияи табдилдиҳандаи HTML ба XPS иҷро кунед.
- Пеш аз ҳама, мо бояд тафсилотро бар зидди усулҳои Configuration.setAPPSID ва Configuration.setAPIKEY муайян кунем.
- Дуюм, мо тафсилотро барои setBasePath(..), setAuthPath(..) муқаррар мекунем ва setUserAgent(…)-ро ҳамчун WebKit муайян мекунем.
- Сеюм, барои кӯмаки худ, мо setDebug (..) -ро ҳамчун ҳақиқӣ таъин мекунем
- Акнун объекти синфи 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);
// Объекти API Cloud Aspose.HTML эҷод кунед
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();
// бозгашти true ҳамчун файл бомуваффақият захира кунед
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
} // saveToDisc ends here
Намунаҳои файлҳои дар мисоли боло истифодашуда метавонанд аз list.html ва resultantFile.xps бор карда шаванд.
HTML ба XPS бо истифода аз фармонҳои cURL
API-ҳои RESTро инчунин тавассути фармонҳои 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 бо ягон мушкилот рӯ ба рӯ шавед, лутфан бо Форуми дастгирии маҳсулоти ройгон тамос гиред.
Мақолаҳои марбут
Мо инчунин тавсия медиҳем, ки ба блогҳои зерин барои тафсилоти бештар дар бораи: