في هذا البرنامج التعليمي ، سنغطي كيفية تنفيذ نهج غير متزامن لعارض الويب. ما عليك سوى إرسال محتوى HTML إلى طرق واجهة برمجة تطبيقات SubmitPDFFromHTMLTask أو SubmitImageFromHTMLTask لتلقي معرف المهمة كاستجابة. هناك أيضا طرق SubmitPDFFromUrlTask و SubmitImageFromUrlTask لعرض PDF أو Image من عنوان URL العام على الويب.

بعد تلقي معرف المهمة ، تحتاج إلى التحقق من حالة المهمة عن طريق الاتصال بطريقة GetRenderingTaskStatus. تحتاج إلى استدعاء نفس الطريقة بعد بضع ثوان من التأخير طالما أن حالة المهمة تساوي “Waiting”. بمجرد تلقي “Completed” من طريقة GetRenderingTaskStatus ، يمكنك الاتصال بطريقة DownloadResult لتنزيل الملف النهائي. يمكنك استخدام تطبيق Python أدناه.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import requests
import time


def submit_pdf_from_html_task(htmlContent, uri, rapid_api_key):
    multipart_form_data = {
        'uri': (None, uri),
        'useCompression': (None, 'false'),
        'pageLabel': (None, 'Home Page'),
        'messageLabel': (None, 'Initial Capture'),
        'browserHeight': (None, '768'),
        'browserWidth': (None, '1024'),
        'htmlContent': (None, htmlContent)
    }

    headers = {
        'X-RapidAPI-Key': rapid_api_key
    }

    response = requests.post('https://web-renderer.p.rapidapi.com/SubmitPDFFromHTMLTask',
                             files=multipart_form_data, headers=headers)
    if response.status_code != 200:
        raise Exception('Cannot create task')

    return response.text


def get_rendering_task_status(task_id, rapid_api_key):
    params = {
        'taskId': task_id
    }

    headers = {
        'X-RapidAPI-Key': rapid_api_key
    }

    response = requests.get('https://web-renderer.p.rapidapi.com/GetRenderingTaskStatus',
                            headers=headers, params=params)
    if response.status_code != 200:
        raise Exception("Cannot check task status")

    return response.text


def download_result(task_id, rapid_api_key):
    params = {
        'taskId': task_id
    }

    headers = {
        'X-RapidAPI-Key': rapid_api_key
    }

    response = requests.get('https://web-renderer.p.rapidapi.com/DownloadResult', headers=headers,
                            params=params)
    if response.status_code != 200:
        raise Exception('Cannot download file')

    return response.content


if __name__ == '__main__':
    rapid_api_key = '<YOUR RAPIDAPI KEY HERE>'
    html_content = '<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"></head><body><h1>Hello World!</h1></body></html>'
    uriOfHtmlContent = 'https://www.google.com?hl=en'
    task_id = submit_pdf_from_html_task(html_content, uriOfHtmlContent, rapid_api_key)
    retry_count = 0
    while retry_count < 100:
        retry_count += 1
        time.sleep(5)
        status = get_rendering_task_status(task_id, rapid_api_key)
        if status == 'Completed':
            file_bytes = download_result(task_id, rapid_api_key)
            with open('html_from_html.pdf', mode='wb') as binary_pdf:
                binary_pdf.write(file_bytes)
            break
        elif status == 'Waiting':
            continue
        elif status == 'Failed':
            raise Exception('Cannot render html')
        else:
            raise Exception('Invalid status')