{"id":586,"date":"2024-02-15T17:46:50","date_gmt":"2024-02-15T09:46:50","guid":{"rendered":"http:\/\/139.224.70.39\/?p=586"},"modified":"2024-02-15T17:46:50","modified_gmt":"2024-02-15T09:46:50","slug":"python%e5%90%88%e5%b9%b6%e4%b8%bapdf","status":"publish","type":"post","link":"http:\/\/139.224.70.39\/?p=586","title":{"rendered":"Python\u5408\u5e76\u4e3aPDF"},"content":{"rendered":"<fieldset>\n<legend>\u6e29\u99a8\u63d0\u793a<\/legend>\n<p>[alert class=&#8221;success&#8221;]\u5408\u5e76PDF[\/alert]<\/fieldset>\n<h2>\u591a\u4e2aPDF\u5408\u6210<\/h2>\n<p>\u4e4b\u524d\u6293\u53d6\u4e86\u4e00\u6279\u62a5\u7eb8\uff0c\u4f46\u662f\u6bcf\u4e00\u9875\u5c31\u662f\u4e00\u4e2aPDF\uff0c\u4e00\u4e2a\u65e5\u671f\u53ef\u80fd\u6709\u5341\u51e0\u9875\uff0c\u67e5\u9605\u4e0d\u592a\u65b9\u4fbf\uff0c\u540e\u6765\u5c31\u6309\u7167\u5e74\u4efd\u5408\u5e76\u4e3a\u4e00\u4e2a\u6574\u4f53PDF\u3002<\/p>\n<p>\u7b2c\u4e8c\u6b21\u53d1\u73b0\u5408\u5e76\u540e\u5fd8\u8bb0\u6dfb\u52a0\u4e66\u7b7e\u4e86\uff0c\u53c8\u4fee\u6539\u4e86\u4e00\u4e0b\u4ee3\u7801\uff1a<\/p>\n<pre class=\"prettyprint lang-py linenums:1\">import os\r\nfrom tqdm import tqdm\r\nfrom pypdf import PdfWriter\r\npath = r\"C:\\Users\\Shen\\Desktop\\\u6d77\u71d5.\u5927\u8fde\u65e5\u62a5\u526f\u520a\uff081948\uff09\"\r\ntitle = path.split(\"\\\\\")[-1]\r\nprint(title)\r\ncount = -1\r\nmerger = PdfWriter()\r\nfor pdf in tqdm(os.listdir(path)):\r\n    count += 1\r\n    print(os.path.join(path, pdf))\r\n    merger.append(os.path.join(path, pdf))\r\n# \u6dfb\u52a0\u4e66\u7b7e\r\n    merger.add_outline_item(title=pdf.replace(\".pdf\", \"\").replace(\".jpg\", \"\"), page_number=count)\r\nmerger.write(os.path.join(r\"C:\\Users\\Shen\\Desktop\", \"{}.pdf\".format(title)))\r\nmerger.close()\r\n<\/pre>\n<h2>\u56fe\u7247\u5408\u5e76\u4e3aPDF<\/h2>\n<p>\u6700\u8fd1\u9700\u8981\u5e2e\u4eba\u6293\u53d6\u4e00\u4e9b\u4e66\u7c4d\uff0c\u4f46\u4e66\u7c4d\u662fJPG\u683c\u5f0f\uff0c\u9700\u8981\u5c06JPG\u5408\u5e76\u4e3aPDF\u3002\u6293\u53d6JPG\u7684\u4ee3\u7801\u7565\u8fc7\u3002<\/p>\n<pre class=\"prettyprint lang-py linenums:1\">import os\r\nimport re\r\nfrom PIL import Image\r\nfrom reportlab.lib.pagesizes import letter\r\nfrom reportlab.pdfgen import canvas\r\nfrom tqdm import tqdm\r\n\r\n\r\ndef images_to_pdf(image_folder, output_pdf):\r\n    c = canvas.Canvas(output_pdf, pagesize=letter)\r\n    # \u83b7\u53d6\u6587\u4ef6\u5939\u4e2d\u7684\u56fe\u7247\u6587\u4ef6\u5217\u8868\uff0c\u5e76\u6309\u6587\u4ef6\u540d\u79f0\u6392\u5e8f\r\n    image_files = sorted([\r\n        filename for filename in os.listdir(image_folder)\r\n        if filename.endswith('.jpg') or filename.endswith('.png')\r\n    ])\r\n    # \u904d\u5386\u6392\u5e8f\u540e\u7684\u56fe\u7247\u6587\u4ef6\u5217\u8868\r\n    image_files.sort(key=lambda x: int(re.findall(r'\\d+', x)[0]))\r\n    for filename in tqdm(image_files):\r\n        # print(filename)\r\n        image_path = os.path.join(image_folder, filename)\r\n        image = Image.open(image_path)\r\n        image_width, image_height = image.size\r\n        c.setPageSize((image_width, image_height))\r\n        c.drawImage(image_path, 0, 0)\r\n        # \u6dfb\u52a0\u65b0\u9875\u9762\r\n        c.showPage()\r\n    # \u4fdd\u5b58\u5408\u5e76\u540e\u7684PDF\u6587\u4ef6\r\n    c.save()\r\n    print(f\"PDF file saved: {output_pdf}\")\r\n\r\n\r\n# \u6307\u5b9a\u5305\u542b\u56fe\u7247\u7684\u6587\u4ef6\u5939\u8def\u5f84\r\nimage_folder = r\"C:\\Users\\Shen\\PycharmProjects\\pythonProject\\32\u672c\\\u9752\u7f8a\u5e74\u92742016\"\r\n# \u6307\u5b9a\u8f93\u51fa\u7684PDF\u6587\u4ef6\u8def\u5f84\r\noutput_pdf = r\"C:\\Users\\Shen\\PycharmProjects\\pythonProject\\32\u672c\\\u9752\u7f8a\u5e74\u92742016.pdf\"\r\n# \u8c03\u7528\u51fd\u6570\u5408\u5e76\u56fe\u7247\u4e3aPDF\r\nimages_to_pdf(image_folder, output_pdf)\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u6e29\u99a8\u63d0\u793a [alert class=&#8221;success&#8221;]\u5408\u5e76PDF[\/alert] \u591a&#8230;<\/p>\n<div class=\"read-more-link\"><a href=\"http:\/\/139.224.70.39\/?p=586\">Read More<\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[13],"tags":[],"class_list":["post-586","post","type-post","status-publish","format-standard","hentry","category-python"],"acf":[],"_links":{"self":[{"href":"http:\/\/139.224.70.39\/index.php?rest_route=\/wp\/v2\/posts\/586","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/139.224.70.39\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/139.224.70.39\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/139.224.70.39\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/139.224.70.39\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=586"}],"version-history":[{"count":3,"href":"http:\/\/139.224.70.39\/index.php?rest_route=\/wp\/v2\/posts\/586\/revisions"}],"predecessor-version":[{"id":589,"href":"http:\/\/139.224.70.39\/index.php?rest_route=\/wp\/v2\/posts\/586\/revisions\/589"}],"wp:attachment":[{"href":"http:\/\/139.224.70.39\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=586"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/139.224.70.39\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=586"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/139.224.70.39\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}