{"id":40,"date":"2023-09-25T19:07:06","date_gmt":"2023-09-25T12:07:06","guid":{"rendered":"https:\/\/www.tsongpol.com\/?p=40"},"modified":"2023-09-27T07:59:47","modified_gmt":"2023-09-27T00:59:47","slug":"python-convert-zip-file-to-pdf","status":"publish","type":"post","link":"https:\/\/www.tsongpol.com\/?p=40","title":{"rendered":"Python: Convert Zip file to PDF"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u0e42\u0e08\u0e17\u0e22\u0e4c\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49\u0e04\u0e37\u0e2d \u0e2d\u0e22\u0e32\u0e01\u0e44\u0e14\u0e49 python file \u0e15\u0e31\u0e27\u0e19\u0e36\u0e07\u0e17\u0e35\u0e48\u0e17\u0e33\u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19 zip file \u0e17\u0e35\u0e48\u0e21\u0e35 image \u0e2d\u0e22\u0e39\u0e48\u0e02\u0e49\u0e32\u0e07\u0e43\u0e19 \u0e2a\u0e48\u0e27\u0e19\u0e43\u0e2b\u0e0d\u0e48\u0e44\u0e1f\u0e25\u0e4c\u0e41\u0e1a\u0e1a\u0e19\u0e35\u0e49\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e41\u0e2b\u0e25\u0e30 \u0e2d\u0e32\u0e08\u0e08\u0e30\u0e16\u0e48\u0e32\u0e22\u0e23\u0e39\u0e1b \u0e2b\u0e23\u0e37\u0e2d\u0e41\u0e2a\u0e01\u0e19\u0e40\u0e02\u0e49\u0e32\u0e21\u0e32\u0e41\u0e25\u0e49\u0e27\u0e40\u0e1b\u0e47\u0e19 jpg,png zip \u0e44\u0e1f\u0e25\u0e4c\u0e23\u0e27\u0e21\u0e01\u0e31\u0e19\u0e21\u0e32 <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"653\" height=\"267\" src=\"https:\/\/www.tsongpol.com\/wp-content\/uploads\/2023\/09\/Screenshot-2023-09-25-185759.png\" alt=\"\" class=\"wp-image-41\" srcset=\"https:\/\/www.tsongpol.com\/wp-content\/uploads\/2023\/09\/Screenshot-2023-09-25-185759.png 653w, https:\/\/www.tsongpol.com\/wp-content\/uploads\/2023\/09\/Screenshot-2023-09-25-185759-300x123.png 300w\" sizes=\"auto, (max-width: 653px) 100vw, 653px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"246\" height=\"48\" src=\"https:\/\/www.tsongpol.com\/wp-content\/uploads\/2023\/09\/Screenshot-2023-09-25-185829.png\" alt=\"\" class=\"wp-image-42\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e01\u0e47\u0e17\u0e33\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e44\u0e1f\u0e25\u0e4c .py \u0e02\u0e36\u0e49\u0e19\u0e21\u0e32 \u0e14\u0e49\u0e27\u0e22\u0e42\u0e04\u0e49\u0e14\u0e14\u0e31\u0e07\u0e19\u0e35\u0e49 (By ChatGPT)<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"import os\nimport sys\nimport zipfile\nimport rarfile\nimport py7zr\nfrom reportlab.lib.pagesizes import letter\nfrom reportlab.pdfgen import canvas\nfrom PIL import Image, ExifTags\nfrom tqdm import tqdm  # Import tqdm for progress bar\n# command to get all file zip Get-ChildItem -Filter *.zip | ForEach-Object { Write-Host -NoNewline ('&quot;{0}&quot; ' -f [System.IO.Path]::GetFileName($_.FullName)) }\n# Check if the script is provided with archive file paths as command-line arguments\nif len(sys.argv) < 2:\n    print(&quot;Usage: python script.py <archive_file_path1&gt; <archive_file_path2&gt; ...&quot;)\n    sys.exit(1)\n\narchive_file_paths = sys.argv[1:]\n\n# Function to extract and process images from an archive (ZIP, RAR, or 7Z)\ndef extract_and_process_images(archive_path, pdf_file):\n    if zipfile.is_zipfile(archive_path):\n        with zipfile.ZipFile(archive_path, &quot;r&quot;) as archive:\n            extract_images_from_archive(archive, pdf_file)\n    elif rarfile.is_rarfile(archive_path):\n        with rarfile.RarFile(archive_path, &quot;r&quot;) as archive:\n            extract_images_from_archive(archive, pdf_file)\n    elif py7zr.is_7zfile(archive_path):\n        with py7zr.SevenZipFile(archive_path, mode=&quot;r&quot;) as archive:\n            extract_images_from_archive(archive, pdf_file)\n    else:\n        print(f&quot;Unsupported archive format for file: {archive_path}&quot;)\n\n# Function to extract and process images from a supported archive\ndef extract_images_from_archive(archive, pdf_file):\n    pdf = canvas.Canvas(pdf_file, pagesize=letter)\n    pdf.setPageSize((595, 842))  # Set page size to match the typical A4 size\n\n    # Get a sorted list of filenames within the archive\n    image_filenames = sorted(\n        (entry for entry in archive.namelist() if not entry.endswith('\/'))\n    )\n\n    # Create a progress bar\n    progress_bar = tqdm(total=len(image_filenames), unit=&quot;image&quot;)\n\n    for idx, entry in enumerate(image_filenames):\n        with archive.open(entry) as image_file:\n            _, ext = os.path.splitext(entry)\n            ext = ext.lower()\n            if ext in (&quot;.jpg&quot;, &quot;.jpeg&quot;, &quot;.png&quot;):\n                # Save the image to a temporary file\n                temp_image_file = f&quot;temp_image_{idx}.{ext}&quot;\n                with open(temp_image_file, &quot;wb&quot;) as temp_file:\n                    temp_file.write(image_file.read())\n\n                # Open the temporary image file with PIL\n                img = Image.open(temp_image_file)\n\n                # Check and adjust image orientation (rotate if necessary)\n                for orientation in ExifTags.TAGS.keys():\n                    if ExifTags.TAGS[orientation] == 'Orientation':\n                        try:\n                            exif = dict(img._getexif().items())\n                            if exif[orientation] == 3:\n                                img = img.rotate(180, expand=True)\n                            elif exif[orientation] == 6:\n                                img = img.rotate(270, expand=True)\n                            elif exif[orientation] == 8:\n                                img = img.rotate(90, expand=True)\n                        except (AttributeError, KeyError, IndexError):\n                            # No EXIF information found, continue without rotation\n                            pass\n\n                # Scale the image to fit the page width (keep the aspect ratio)\n                img.thumbnail((595, 842))\n                img_width, img_height = img.size\n\n                # Add the image to the PDF\n                pdf.drawImage(\n                    temp_image_file,\n                    x=0,  # Adjust the X position as needed\n                    y=842 - img_height,  # Adjust the Y position as needed\n                    width=img_width,\n                    height=img_height,\n                    preserveAspectRatio=True,\n                )\n\n                # Add the filename as text\n                pdf.drawString(10, 10, os.path.basename(entry))\n\n                pdf.showPage()\n\n                # Remove the temporary image file\n                os.remove(temp_image_file)\n\n                # Update the progress bar\n                progress_bar.update(1)\n\n    # Close the progress bar\n    progress_bar.close()\n\n    pdf.save()\n\n# Process each provided archive file\nfor archive_path in archive_file_paths:\n    # Verify that the provided path exists\n    if not os.path.isfile(archive_path):\n        print(f&quot;Skipping non-existent file: {archive_path}&quot;)\n        continue\n\n    # Extract the PDF file name from the archive file name\n    pdf_file_name = os.path.splitext(os.path.basename(archive_path))[0] + &quot;.pdf&quot;\n\n    # Call the function to extract and process images from the archive file\n    extract_and_process_images(archive_path, pdf_file_name)\n\n    print(f&quot;PDF file '{pdf_file_name}' created successfully.&quot;)\n<gwmw style=&quot;display:none;&quot;&gt;<\/gwmw&gt;\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> os<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> sys<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> zipfile<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> rarfile<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> py7zr<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">from<\/span><span style=\"color: #D8DEE9FF\"> reportlab<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">lib<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">pagesizes <\/span><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> letter<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">from<\/span><span style=\"color: #D8DEE9FF\"> reportlab<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">pdfgen <\/span><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> canvas<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">from<\/span><span style=\"color: #D8DEE9FF\"> PIL <\/span><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> Image<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> ExifTags<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">from<\/span><span style=\"color: #D8DEE9FF\"> tqdm <\/span><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> tqdm  <\/span><span style=\"color: #616E88\"># Import tqdm for progress bar<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># command to get all file zip Get-ChildItem -Filter *.zip | ForEach-Object { Write-Host -NoNewline (&#39;&quot;{0}&quot; &#39; -f [System.IO.Path]::GetFileName($_.FullName)) }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Check if the script is provided with archive file paths as command-line arguments<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">len<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">sys<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">argv<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">&lt;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">2<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Usage: python script.py &lt;archive_file_path1&gt; &lt;archive_file_path2&gt; ...<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    sys<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">exit<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">archive_file_paths <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> sys<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">argv<\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">:]<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Function to extract and process images from an archive (ZIP, RAR, or 7Z)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">extract_and_process_images<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">archive_path<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">pdf_file<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> zipfile<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">is_zipfile<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">archive_path<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">with<\/span><span style=\"color: #D8DEE9FF\"> zipfile<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">ZipFile<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">archive_path<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">r<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">as<\/span><span style=\"color: #D8DEE9FF\"> archive<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #88C0D0\">extract_images_from_archive<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">archive<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> pdf_file<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">elif<\/span><span style=\"color: #D8DEE9FF\"> rarfile<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">is_rarfile<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">archive_path<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">with<\/span><span style=\"color: #D8DEE9FF\"> rarfile<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">RarFile<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">archive_path<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">r<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">as<\/span><span style=\"color: #D8DEE9FF\"> archive<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #88C0D0\">extract_images_from_archive<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">archive<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> pdf_file<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">elif<\/span><span style=\"color: #D8DEE9FF\"> py7zr<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">is_7zfile<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">archive_path<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">with<\/span><span style=\"color: #D8DEE9FF\"> py7zr<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">SevenZipFile<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">archive_path<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">mode<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">r<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">as<\/span><span style=\"color: #D8DEE9FF\"> archive<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #88C0D0\">extract_images_from_archive<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">archive<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> pdf_file<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">else<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;Unsupported archive format for file: <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">archive_path<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Function to extract and process images from a supported archive<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">def<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">extract_images_from_archive<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">archive<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">pdf_file<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    pdf <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> canvas<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">Canvas<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">pdf_file<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">pagesize<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">letter<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    pdf<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">setPageSize<\/span><span style=\"color: #ECEFF4\">((<\/span><span style=\"color: #B48EAD\">595<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">842<\/span><span style=\"color: #ECEFF4\">))<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\"># Set page size to match the typical A4 size<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #616E88\"># Get a sorted list of filenames within the archive<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    image_filenames <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">sorted<\/span><span style=\"color: #ECEFF4\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">entry <\/span><span style=\"color: #81A1C1\">for<\/span><span style=\"color: #D8DEE9FF\"> entry <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> archive<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">namelist<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">not<\/span><span style=\"color: #D8DEE9FF\"> entry<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">endswith<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">\/<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #616E88\"># Create a progress bar<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    progress_bar <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">tqdm<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">total<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #88C0D0\">len<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">image_filenames<\/span><span style=\"color: #ECEFF4\">),<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">unit<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">image<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">for<\/span><span style=\"color: #D8DEE9FF\"> idx<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> entry <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">enumerate<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">image_filenames<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">with<\/span><span style=\"color: #D8DEE9FF\"> archive<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">open<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">entry<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">as<\/span><span style=\"color: #D8DEE9FF\"> image_file<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            _<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> ext <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> os<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">path<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">splitext<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">entry<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            ext <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> ext<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">lower<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> ext <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">.jpg<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">.jpeg<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">.png<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #616E88\"># Save the image to a temporary file<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                temp_image_file <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;temp_image_<\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">idx<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">.<\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">ext<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #81A1C1\">with<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">open<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">temp_image_file<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">wb<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">as<\/span><span style=\"color: #D8DEE9FF\"> temp_file<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                    temp_file<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">write<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">image_file<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">read<\/span><span style=\"color: #ECEFF4\">())<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #616E88\"># Open the temporary image file with PIL<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                img <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> Image<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">open<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">temp_image_file<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #616E88\"># Check and adjust image orientation (rotate if necessary)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #81A1C1\">for<\/span><span style=\"color: #D8DEE9FF\"> orientation <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> ExifTags<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">TAGS<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">keys<\/span><span style=\"color: #ECEFF4\">():<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                    <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> ExifTags<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">TAGS<\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">orientation<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">==<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">Orientation<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                        <\/span><span style=\"color: #81A1C1\">try<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            exif <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">dict<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">img<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">_getexif<\/span><span style=\"color: #ECEFF4\">().<\/span><span style=\"color: #88C0D0\">items<\/span><span style=\"color: #ECEFF4\">())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> exif<\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">orientation<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">==<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                img <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> img<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">rotate<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #B48EAD\">180<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">expand<\/span><span style=\"color: #81A1C1\">=True<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><span style=\"color: #81A1C1\">elif<\/span><span style=\"color: #D8DEE9FF\"> exif<\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">orientation<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">==<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">6<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                img <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> img<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">rotate<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #B48EAD\">270<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">expand<\/span><span style=\"color: #81A1C1\">=True<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><span style=\"color: #81A1C1\">elif<\/span><span style=\"color: #D8DEE9FF\"> exif<\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">orientation<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">==<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">8<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                img <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> img<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">rotate<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #B48EAD\">90<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">expand<\/span><span style=\"color: #81A1C1\">=True<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                        <\/span><span style=\"color: #81A1C1\">except<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #8FBCBB\">AttributeError<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">KeyError<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">IndexError<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><span style=\"color: #616E88\"># No EXIF information found, continue without rotation<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                            <\/span><span style=\"color: #81A1C1\">pass<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #616E88\"># Scale the image to fit the page width (keep the aspect ratio)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                img<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">thumbnail<\/span><span style=\"color: #ECEFF4\">((<\/span><span style=\"color: #B48EAD\">595<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">842<\/span><span style=\"color: #ECEFF4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                img_width<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> img_height <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> img<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">size<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #616E88\"># Add the image to the PDF<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                pdf<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">drawImage<\/span><span style=\"color: #ECEFF4\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                    temp_image_file<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                    <\/span><span style=\"color: #D8DEE9\">x<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\"># Adjust the X position as needed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                    <\/span><span style=\"color: #D8DEE9\">y<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #B48EAD\">842<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\"> img_height<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #616E88\"># Adjust the Y position as needed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                    <\/span><span style=\"color: #D8DEE9\">width<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">img_width<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                    <\/span><span style=\"color: #D8DEE9\">height<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">img_height<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                    <\/span><span style=\"color: #D8DEE9\">preserveAspectRatio<\/span><span style=\"color: #81A1C1\">=True<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #616E88\"># Add the filename as text<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                pdf<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">drawString<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">10<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> os<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">path<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">basename<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">entry<\/span><span style=\"color: #ECEFF4\">))<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                pdf<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">showPage<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #616E88\"># Remove the temporary image file<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                os<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">remove<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">temp_image_file<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                <\/span><span style=\"color: #616E88\"># Update the progress bar<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                progress_bar<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">update<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #616E88\"># Close the progress bar<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    progress_bar<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">close<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    pdf<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">save<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Process each provided archive file<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">for<\/span><span style=\"color: #D8DEE9FF\"> archive_path <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> archive_file_paths<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #616E88\"># Verify that the provided path exists<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">not<\/span><span style=\"color: #D8DEE9FF\"> os<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">path<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">isfile<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">archive_path<\/span><span style=\"color: #ECEFF4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;Skipping non-existent file: <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">archive_path<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">continue<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #616E88\"># Extract the PDF file name from the archive file name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    pdf_file_name <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> os<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">path<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">splitext<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">os<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">path<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">basename<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">archive_path<\/span><span style=\"color: #ECEFF4\">))[<\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">+<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">.pdf<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #616E88\"># Call the function to extract and process images from the archive file<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">extract_and_process_images<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">archive_path<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> pdf_file_name<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&quot;PDF file &#39;<\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #D8DEE9FF\">pdf_file_name<\/span><span style=\"color: #EBCB8B\">}<\/span><span style=\"color: #A3BE8C\">&#39; created successfully.&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">&lt;<\/span><span style=\"color: #D8DEE9FF\">gwmw style<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">display:none;<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #81A1C1\">&gt;&lt;\/<\/span><span style=\"color: #D8DEE9FF\">gwmw<\/span><span style=\"color: #81A1C1\">&gt;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e40\u0e0b\u0e1f\u0e40\u0e1b\u0e47\u0e19 .py \u0e41\u0e25\u0e49\u0e27\u0e23\u0e31\u0e19\u0e44\u0e1f\u0e25\u0e4c xxx.py \u0e15\u0e32\u0e21\u0e14\u0e49\u0e27\u0e22 zip file <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"77\" src=\"https:\/\/www.tsongpol.com\/wp-content\/uploads\/2023\/09\/Screenshot-2023-09-25-190159-1024x77.png\" alt=\"\" class=\"wp-image-43\" srcset=\"https:\/\/www.tsongpol.com\/wp-content\/uploads\/2023\/09\/Screenshot-2023-09-25-190159-1024x77.png 1024w, https:\/\/www.tsongpol.com\/wp-content\/uploads\/2023\/09\/Screenshot-2023-09-25-190159-300x23.png 300w, https:\/\/www.tsongpol.com\/wp-content\/uploads\/2023\/09\/Screenshot-2023-09-25-190159-768x58.png 768w, https:\/\/www.tsongpol.com\/wp-content\/uploads\/2023\/09\/Screenshot-2023-09-25-190159.png 1093w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e01\u0e47\u0e08\u0e30\u0e44\u0e14\u0e49\u0e44\u0e1f\u0e25\u0e4c PDF \u0e08\u0e32\u0e01 Image zip file<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.tsongpol.com\/wp-content\/uploads\/2023\/09\/Screenshot-2023-09-25-190221.png\" alt=\"\" class=\"wp-image-44\" style=\"width:832px;height:131px\" width=\"832\" height=\"131\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e43\u0e19\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07 run \u0e2b\u0e32\u0e01\u0e02\u0e32\u0e14 library \u0e15\u0e31\u0e27\u0e44\u0e2b\u0e19 \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16 pip install lib \u0e15\u0e31\u0e27\u0e17\u0e35\u0e48\u0e02\u0e32\u0e14\u0e44\u0e14\u0e49\u0e40\u0e25\u0e22 \u0e40\u0e0a\u0e48\u0e19 zipfile rarfile PIL<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e01\u0e47\u0e08\u0e30\u0e44\u0e14\u0e49\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e17\u0e4c\u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23 <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"693\" src=\"https:\/\/www.tsongpol.com\/wp-content\/uploads\/2023\/09\/Screenshot-2023-09-25-190304.png\" alt=\"\" class=\"wp-image-45\" srcset=\"https:\/\/www.tsongpol.com\/wp-content\/uploads\/2023\/09\/Screenshot-2023-09-25-190304.png 512w, https:\/\/www.tsongpol.com\/wp-content\/uploads\/2023\/09\/Screenshot-2023-09-25-190304-222x300.png 222w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e16\u0e49\u0e32\u0e21\u0e35 zip file \u0e2b\u0e25\u0e32\u0e22 \u0e46 \u0e44\u0e1f\u0e25\u0e4c \u0e01\u0e47\u0e23\u0e31\u0e19\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e15\u0e32\u0e21\u0e19\u0e35\u0e49 \u0e40\u0e1e\u0e37\u0e48\u0e2d list \u0e0a\u0e37\u0e48\u0e2d\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e21\u0e32 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e17\u0e33\u0e17\u0e35\u0e40\u0e14\u0e35\u0e22\u0e27\u0e44\u0e14\u0e49<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"Get-ChildItem -Filter *.zip | ForEach-Object { Write-Host -NoNewline ('&quot;{0}&quot; ' -f [System.IO.Path]::GetFileName($_.FullName)) }\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #88C0D0\">Get-ChildItem<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">Filter <\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\">.zip <\/span><span style=\"color: #81A1C1\">|<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">ForEach-Object<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">Write-Host<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\">NoNewline <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">&quot;{0}&quot; <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-f<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #81A1C1\">System.IO.Path<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">::GetFileName<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">$<\/span><span style=\"color: #D8DEE9FF\">_<\/span><span style=\"color: #D8DEE9\">.FullName<\/span><span style=\"color: #ECEFF4\">))<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e40\u0e23\u0e32\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e2d\u0e32\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e21\u0e32\u0e15\u0e48\u0e2d\u0e40\u0e1b\u0e47\u0e19 parameter \u0e15\u0e48\u0e2d \u0e46 \u0e01\u0e31\u0e19\u0e44\u0e1b\u0e44\u0e14\u0e49<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"python convert.py file1.zip file2.zip filexxx.zip\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">python convert.py file1.zip file2.zip filexxx.zip<\/span><\/span><\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0e42\u0e08\u0e17\u0e22\u0e4c\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49\u0e04\u0e37\u0e2d \u0e2d\u0e22\u0e32\u0e01\u0e44\u0e14\u0e49 python file \u0e15\u0e31\u0e27\u0e19\u0e36\u0e07\u0e17\u0e35\u0e48\u0e17\u0e33\u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19 zip file \u0e17\u0e35\u0e48\u0e21\u0e35 image \u0e2d\u0e22\u0e39\u0e48\u0e02\u0e49\u0e32\u0e07\u0e43\u0e19 \u0e2a\u0e48\u0e27\u0e19\u0e43\u0e2b\u0e0d\u0e48\u0e44\u0e1f\u0e25\u0e4c\u0e41\u0e1a\u0e1a\u0e19\u0e35\u0e49\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\u0e41\u0e2b\u0e25\u0e30 \u0e2d\u0e32\u0e08\u0e08\u0e30\u0e16\u0e48\u0e32\u0e22\u0e23\u0e39\u0e1b \u0e2b\u0e23\u0e37\u0e2d\u0e41\u0e2a\u0e01\u0e19\u0e40\u0e02\u0e49\u0e32\u0e21\u0e32\u0e41\u0e25\u0e49\u0e27\u0e40\u0e1b\u0e47\u0e19 jpg,png zip \u0e44\u0e1f\u0e25\u0e4c\u0e23\u0e27\u0e21\u0e01\u0e31\u0e19\u0e21\u0e32 \u0e01\u0e47\u0e17\u0e33\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e44\u0e1f\u0e25\u0e4c .py \u0e02\u0e36\u0e49\u0e19\u0e21\u0e32 \u0e14\u0e49\u0e27\u0e22\u0e42\u0e04\u0e49\u0e14\u0e14\u0e31\u0e07\u0e19\u0e35\u0e49 (By ChatGPT) \u0e40\u0e0b\u0e1f\u0e40\u0e1b\u0e47\u0e19 .py \u0e41\u0e25\u0e49\u0e27\u0e23\u0e31\u0e19\u0e44\u0e1f\u0e25\u0e4c xxx.py \u0e15\u0e32\u0e21\u0e14\u0e49\u0e27\u0e22 zip file \u0e01\u0e47\u0e08\u0e30\u0e44\u0e14\u0e49\u0e44\u0e1f\u0e25\u0e4c PDF \u0e08\u0e32\u0e01 Image zip file \u0e43\u0e19\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07 run \u0e2b\u0e32\u0e01\u0e02\u0e32\u0e14 library \u0e15\u0e31\u0e27\u0e44\u0e2b\u0e19 \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16 pip install lib \u0e15\u0e31\u0e27\u0e17\u0e35\u0e48\u0e02\u0e32\u0e14\u0e44\u0e14\u0e49\u0e40\u0e25\u0e22 \u0e40\u0e0a\u0e48\u0e19 zipfile rarfile PIL \u0e01\u0e47\u0e08\u0e30\u0e44\u0e14\u0e49\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e17\u0e4c\u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23 \u0e16\u0e49\u0e32\u0e21\u0e35 zip file \u0e2b\u0e25\u0e32\u0e22 \u0e46 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":46,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[7],"class_list":["post-40","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-coding","tag-python"],"_links":{"self":[{"href":"https:\/\/www.tsongpol.com\/index.php?rest_route=\/wp\/v2\/posts\/40","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tsongpol.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tsongpol.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tsongpol.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tsongpol.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=40"}],"version-history":[{"count":4,"href":"https:\/\/www.tsongpol.com\/index.php?rest_route=\/wp\/v2\/posts\/40\/revisions"}],"predecessor-version":[{"id":56,"href":"https:\/\/www.tsongpol.com\/index.php?rest_route=\/wp\/v2\/posts\/40\/revisions\/56"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.tsongpol.com\/index.php?rest_route=\/wp\/v2\/media\/46"}],"wp:attachment":[{"href":"https:\/\/www.tsongpol.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=40"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tsongpol.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=40"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tsongpol.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=40"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}