精华内容
下载资源
问答
  • 四行Python代码实现将word文件高效转换为PDF文件,对于使用Office的小伙伴从此就告别Office转PDF页数限制,时间效率低下等问题;同时对于使用WPS的小伙伴再也不用担心将Word转PDF需要会员;仅仅4行核心代码即可实现...
  • Python实现word转pdf

    万次阅读 多人点赞 2019-11-29 18:48:48
    Python实现word转pdf 在做word转pdf的功能过程中找了很多java的实现(POI),对于普通的文档还是支持的还可以,但是对于文档里面涉及图片、表格、水印等就会出现很多样式上的问题,字体重复,水印丢失,表格位置...

    Python实现word转pdf

    在做word转未pdf的功能过程中找了很多java的实现(POI),对于普通的文档还是支持的还可以,但是对于文档里面涉及图片、表格、水印等就会出现很多样式上的问题,字体重复,水印丢失,表格位置错乱等。

    1、poi用到的转pdf的相关代码如下:

    	public static byte[] docx2pdf(byte[] docxBytes) throws XWPFConverterException, IOException {
    		PdfOptions options = PdfOptions.create();
    		XWPFDocument document = new XWPFDocument(new ByteArrayInputStream(docxBytes));
    		ByteArrayOutputStream baos = new ByteArrayOutputStream();
    //		XHWPFDocument doc = new XHWPFDocument(new ByteArrayInputStream(docxBytes));
    		//document.getp
            //XWPFHeaderFooterPolicy xFooter = new XWPFHeaderFooterPolicy(document);
            
           /* XWPFHeader defaultHeader = xFooter.getDefaultHeader();
            defaultHeader.getParagraphArray(0).getCTP().getRArray(0).getPictArray().
          
            
            XWPFParagraph item = defaultHeader.getParagraphArray(0).getCTP().getRArray(0).getPictArray();
            document.setParagraph(item, document.getPosOfParagraph(document.getLastParagraph()) -2);*/
            
            //xFooter.createWatermark("复制");
            
            
    		PdfConverter.getInstance().convert(document, baos, options);
    		return baos.toByteArray();
    	}

    2、经过了很多次的努力发现还是解决不了上面的问题(功力不够呀,请有解决方法的猿友不吝赐教!),所以不再java上做努力了,经过研究发现用Python可以比较好的实现word转pdf的需求,可是我对于Python一点不熟,学习了一天多,了解了一些基本语法,当然又找了不少的资料,还真是挺多的,word转pdf,转html,pdf转word等等,其他怎么看,就找到了一篇word转pdf的开始研究,Python确实比Java方便多了,只要把以来导入,尽可以执行了,未来调试代码,我就用idea搭起来了Python项目。

    python代码如下:

    # -*- encoding: utf-8 -*-
    import os
    import sys
    
    from win32com import client
    
    # pip install win32com
    def templateDoc2pdf(doc_name, pdf_name):
        """
        :word文件转pdf
        :param doc_name word文件名称
        :param pdf_name 转换后pdf文件名称
        """
        try:
            word = client.DispatchEx("Word.Application")
            if os.path.exists(pdf_name):
                os.remove(pdf_name)
            worddoc = word.Documents.Open(doc_name, ReadOnly=1)
            worddoc.SaveAs(pdf_name, FileFormat=17)
            worddoc.Close()
            return pdf_name
        except:
            return 1
    
    templateDoc2pdf(sys.argv[1], sys.argv[2])

    这个是封装后的代码,是供Java代码调用。

    原始代码如下,可以直接运行:

    # -*- encoding: utf-8 -*-
    import  os
    from win32com import client
    #pip install win32com
    def doc2pdf(doc_name, pdf_name):
        """
        :word文件转pdf
        :param doc_name word文件名称
        :param pdf_name 转换后pdf文件名称
        """
        try:
            word = client.DispatchEx("Word.Application")
            if os.path.exists(pdf_name):
                os.remove(pdf_name)
            worddoc = word.Documents.Open(doc_name,ReadOnly = 1)
            worddoc.SaveAs(pdf_name, FileFormat = 17)
            worddoc.Close()
            return pdf_name
        except:
            return 1
    
    def main():
    	input = r'E:/大仓租赁合同(1).docx'
    	print(input);
        output = r'E:/Python.pdf'
    	print(output);
        rc = doc2pdf(input, output)
    	print(rc);
        # rc = doc2html(input, output)
        # rc = pdf2doc(input, output)
        if rc:
            print('转换成功')
        else:
            print('转换失败')
    
    if __name__ == '__main__':
        main()

    这个可以直接双击调用,就会在指定目录生成pdf文件,完美转化,样子简直和wps转出来的pdf一毛一样,哈哈哈,开心的开始搞代码。

    用Java开始调用python,调用代码如下:

    	@Override
    	public void word2Pdf(String pythonFilePath, String docPath, String pdfPath) {
    		File file = new File(pdfPath);
    		String[] arguments = new String[] {"python",pythonFilePath, docPath, "e:/doc/测试11.pdf"};
    		try {
    			Runtime.getRuntime( ).exec(arguments);
    		} catch (Exception e) {
    			e.printStackTrace( );
    		}
    	}

    这样就实现Java调用python实现word转pdf的功能拉。

    但是,本来这样就完美了,但是,但是,这些代码,python代码所依赖的包都是Windows系统的包,这些代码放到Linux系统上是支持不了的,坑爹啊,快搞完了,才知道这些。。。。
    

    但是还是有方案滴,这里就先不透露了,因为还在改,下篇我们再聊,其实我们用了kkFileView(一个2k星的项目)来完成这个功能,哈哈忍不了,透漏一下。

     

     

     

    每天努力一点,每天都在进步。

    展开全文
  • python实现pdf转word

    2018-11-03 10:43:57
    python实现pdf转word,支持中英文转换,转换精度高,可以达到使用效果。
  • 原理使用python win32 库 调用word底层vba,将word转pdf安装pywin32pip install pywin32python代码from win32com.client import gencachefrom win32com.client import constants, gencachedef createPdf(wordPath,...

    原理

    使用python win32 库 调用word底层vba,将word转成pdf

    安装pywin32

    pip install pywin32

    python代码

    from win32com.client import gencache

    from win32com.client import constants, gencache

    def createPdf(wordPath, pdfPath):

    """

    word转pdf

    :param wordPath: word文件路径

    :param pdfPath: 生成pdf文件路径

    """

    word = gencache.EnsureDispatch('Word.Application')

    doc = word.Documents.Open(wordPath, ReadOnly=1)

    doc.ExportAsFixedFormat(pdfPath,

    constants.wdExportFormatPDF,

    Item=constants.wdExportDocumentWithMarkup,

    CreateBookmarks=constants.wdExportCreateHeadingBookmarks)

    word.Quit(constants.wdDoNotSaveChanges)

    工欲善其事,必先利其器!

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持龙方网络。

    展开全文
  • 主要为大家详细介绍了python批量实现Word文件转换为PDF文件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • python操作word转pdf

    2021-03-20 08:43:41
    name,pdf_name): try: word = client.DispatchEx("Word.Application") if os.path.exists(pdf_name): os.remove(pdf_name) worddoc = word.Documents.Open(doc_name, ReadOnly=1) worddoc.SaveAs(pdf_name, File...

    代码

    import docx
    import requests
    from lxml import etree
    import codecs
    import docx
    from docx.shared import RGBColor
    from docx.shared import Inches
    from docx.shared import Pt
    from docx.enum.text import  WD_PARAGRAPH_ALIGNMENT  #WD_ALIGN_PARAGRAPH以前的库是这个已经废弃了,如果你遇到这种案例时建议替换为新的方法库
    from docx.oxml.ns import qn
    import time
    import os
    import sys
    from win32com import client
    import fitz
    
    
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.54"}
    url_list = []
    def get_url():
        write_intro()
        for i in range(1,5):
            url = "http://liucixin.zuopinj.com/5560/20211%s.html"%i
            url_list.append(url)
    
    def get_content():
        get_url()
        for url in url_list:
            res = requests.get(url,headers=headers).content.decode("utf-8")
            # print(res)
            with open("源码.html", "w", encoding="utf-8") as fp:
                fp.write(res)
            page = etree.HTML(res)
            # print(page)
            content = page.xpath("//p/text()")
            del content[-1]
            num = len(url_list)
            content = "".join(content).replace("\u3000\u3000", "")
            print(content)
    
    
            write_doc(content,num)
    def write_intro():
    
        file = docx.Document("D:/base/球状闪电.docx")
        file.styles['Normal'].font.name = u'微软雅黑'  # 可换成word里面任意字体
        file.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')
    
        # 创建一个封面 固定用法
        p = file.add_paragraph()  # 创建一个段落
        p.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER  # 居中设置
        p.paragraph_format.space_before = Pt(180)  # 段前距为180,调试距离  这些数值都是多次调试展示的效果根据需要自己调整数值即可
        p.paragraph_format.space_after = Pt(30)  # 段后距为30
        run = p.add_run('刘慈欣')  # 在段落里添加内容  这个是题目大标题
        font = run.font  # 设置字体
        font.color.rgb = RGBColor(54, 95, 145)  # 颜色设置,RGB颜色
        font.size = Pt(42)  # 字体大小设置,和word里面的字号相对应
    
        # 在封面上添加日期
        year = time.strftime("%Y")
        month = time.strftime("%m")
        day = time.strftime("%d")
        today = year + '年' + month + '月' + day + '日'  # 构造当天日期
        p = file.add_paragraph()  # 新建一个段落
        p.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
        run = p.add_run(today)  # 在段落中输入当天日期
        font = run.font
        font.color.rgb = RGBColor(54, 95, 145)
        font.size = Pt(26)
    
        # 添加分页符
        file.add_page_break()
        # 设置正文标题
        p = file.add_paragraph()
        p.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER  # 段落文字居中设置
        run = p.add_run('球状闪电')
        run.font.color.rgb = RGBColor(54, 95, 145)  # 字体颜色设置
        run.font.size = Pt(22)  # 字体大小设置
        file.save('D:/base/球状闪电.docx')
        print('小说封面生成完毕')
    
    
    def write_doc(content,num):
        file = docx.Document("D:/base/球状闪电.docx")
    
        # # 编写正文内容之引言
        # p = file.add_paragraph()  # 添加新段落
        # p.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY  # 两端对齐
        # p.paragraph_format.first_line_indent = Inches(0.32)  # 这个控制首行缩进,
        # introduction = '本小说' + str(num) + '篇,具体如下:'
        # p.add_run(introduction)
    
        p = file.add_paragraph()  # 添加新段落
        p.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY  # 设置两端对齐
    
        run_2 = p.add_run(content)  # 添加小说内容
        run_2.font.size = Pt(14)  # 字体大小设置
    
        # 设置加粗
        run_2.font.bold = False
    
    
        file.save('D:/base/球状闪电.docx')
    
    def convert_pdf(doc_name,pdf_name):
        try:
            word = client.DispatchEx("Word.Application")
            if os.path.exists(pdf_name):
                os.remove(pdf_name)
            worddoc = word.Documents.Open(doc_name, ReadOnly=1)
            worddoc.SaveAs(pdf_name, FileFormat=17)
            worddoc.Close()
            return pdf_name
        except:
            return 1
    
    def convert_jpg():
        doc = fitz.open('1.pdf')
        for pg in range(doc.pageCount):
            page = doc[pg]
            rotate = int(0)
            # 每个尺寸的缩放系数为2,这将为我们生成分辨率提高四倍的图像。
            zoom_x = 2.0
            zoom_y = 2.0
            trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
            pm = page.getPixmap(matrix=trans, alpha=False)
            pm.writePNG('%s.png' % pg)
    def main():
        get_content()
        doc_name = "D:/base/球状闪电.docx"
        pdf_name = "D:/base/球状闪电.pdf"
        result = convert_pdf(doc_name,pdf_name)
        if result:
            print("转换pdf成功!")
        else:
            print("转换pdf出错!")
        try:
            convert_jpg()
        except:
            print("出错啦!")
    
    if __name__ == "__main__":
        main()
    
    
    
    

    效果

    word
    在这里插入图片描述
    在这里插入图片描述
    注“word背景是预先保存的,非代码加入”

    pdf
    在这里插入图片描述

    小结

    本意是搞一个一键爬取文章生成png图片的,尝试之后暂时只能生成pdf,

    只好借助一个word插件把word转换成图片了,其实很方便

    插件截图
    在这里插入图片描述
    这个插件可以用来排版、生成pdf、png副本
    此插件地址在这篇文章

    另外顺带提一下,有个txt转换mobi等格式电子书的工具
    具体介绍在这篇文章

    这两天学了一点制作电子书的方法,主要是为了在公众号上做内容方便一点,如果能用代码解决就尽量不借助工具

    可以关注一下,一起学习
    在这里插入图片描述

    展开全文
  • 这些文件主要有三种类型,分别为PDFword(.doc和.docx),我决定把他们全部变为PDF文件,然后再合并所有的pdf文件为一个PDF文件,分两个步骤完成! 1.把所有word转化为PDF from win32com.client import Dispatch ...

    前言:有同学问我,如何把文件夹中的文件一次性完成打印,由于文件太多,单个打印着实麻烦。这些文件主要有三种类型,分别为PDF,word(.doc和.docx),我决定把他们全部变为PDF文件,然后再合并所有的pdf文件为一个PDF文件,分两个步骤完成!

    1.把所有word转化为PDF

    from win32com.client import Dispatch
    import os
    
    pdfRoot = "D:\Desktop\wordToPDF\pdf" #保存pdf结果的文件夹
    wordRoot = "D:\Desktop\wordToPDF\word" #读取word的文件夹
    
    def doc2pdf(filePath, file):
        print("正在转换:",file)
        word = Dispatch('Word.Application')
        doc = word.Documents.Open(filePath)
        outFile = pdfRoot +"\\"+ file.split('.')[0] + ".pdf" #生成pdf文件路径名称
        doc.SaveAs(outFile, FileFormat=17)
        doc.Close()
        word.Quit()
    
    if __name__ == "__main__":
        filelist = os.listdir(wordRoot)
        for file in filelist:
            if (file.endswith(".doc") or file.endswith(".docx")) and ("~$" not in file):
                filePath = wordRoot+"\\"+file
                doc2pdf(filePath, file)
        print ("所有word文件转PDF文件已完成!!!")
    

    2.合并所有PDF文件

    from PyPDF2 import PdfFileMerger
    import os
    
    pdfRoot = "D:\Desktop\wordToPDF\pdf" #保存pdf结果的文件夹
    merger = PdfFileMerger() #调用PDF文件合并模块
    filelist=os.listdir(pdfRoot) #读取文件夹所有文件
    for file in filelist:
        if file.endswith(".pdf"):
            merger.append(pdfRoot+"\\"+file)#合并PDF文件
    merger.write("result.pdf") #写入PDF文件
    

    在这里插入图片描述


    3.多个word文件合并

    from os.path import abspath
    from win32com import client
    import os
    
    wordRoot = "D:\Desktop\Ada\word" #读取word的文件夹
    final_docx = r"D:\Desktop\Ada\result\word文件合并结果2.docx"
    files = list()
    filelist = os.listdir(wordRoot)
    for file in filelist:
        if (file.endswith(".doc") or file.endswith(".docx")) and ("~$" not in file):
            filePath = wordRoot+"\\"+file
            files.append(filePath)
    # 启动word应用程序
    word = client.gencache.EnsureDispatch("Word.Application")
    word.Visible = True
    # 新建空白文档
    new_document = word.Documents.Add()
    
    for fn in files[::-1]:
        print ("正在合并:", fn)
        fn = abspath(fn)
        new_document.Application.Selection.Range.InsertFile(fn)
    # 保存最终文件,关闭Word应用程序
    new_document.SaveAs(final_docx)
    new_document.Close()
    word.Quit()
    

    在这里插入图片描述

    展开全文
  • python3 word转pdf

    万次阅读 2018-11-27 21:49:51
    python3 word转pdf 我们可能经常会遇到这样的情况,需要将别人发过来的word文档转为pdf格式,数量少的时候一个个打开另存为即可,但是有时候动不动十几个文件,一个个弄就太麻烦了,最近也遇到了这样的问题,与大家...
  • python实现批量Word转PDF

    2021-09-16 23:05:11
    使用说明: 代码: ...from PyPDF2 import PdfFileMerger ...def doc2pdf(filePath, file, output): print("正在转换:", file) word = Dispatch('Word.Application') doc = word.Documents.Open(fileP
  • 使用python脚本完成word转pdf(兼容linux) 参考:https://v3u.cn/a_id_96 起因:看到一个需求是用java把word转pdf,在windows上使用Jacob可以实现,但linux上比较麻烦, 性能等综合考虑使用OpenOffice比较好。 ...
  • "man xhost" for details) 需要执行如下如下命令后重新运行即可: [root&desktop ~]# export DISPLAY=:0.0 1-2 libroffice 把word 成html 格式为: libreoffice6.0 --invisible --convert-to html --outdir (目标...
  • 主要为大家详细介绍了python实现pdf转换成word和txt纯文本文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 点击上方“AI搞事情”关注我们清明Python调用Win32com实现Office批量PDFhttps://www.cnblogs.com/lolipop2019/p/14227331....
  • 在使用python提取所有word文件中的所有图片提到过docdocx,其中提到过如果想转换为其他格式文件,需要在format文件名内修改,并用如下save as 参数 现在,就是利用这个参数,实现WORD转PDF 核心代码 利用如下代码...
  • 使用pythonword文档转换为PDF文档

    千次阅读 2020-11-25 20:32:00
    欢迎关注”生信修炼手册”!对于windows系统的编程开发,微软一开始提供了基于VB语言的接口,后来又推出了.NET框架。对于word等offices套件的自动化操作,由于原生支持的特性...
  • 1 Pythonword文件转换为PDF文件

    万次阅读 2017-01-18 17:48:11
    利用Python脚本将word转换为pdf
  • 主要介绍了Python实现将DOC文档转换为PDF的方法,涉及Python调用系统win32com组件实现文件格式转换的相关技巧,需要的朋友可以参考下
  • python办公自动之实现批量word转PDF 不多说,看代码实现,有问题可以留言: from win32com.client import gencache from win32com.client import constants, gencache import os,re def createPdf(wordPath, pdfPath...
  • 本文实例为大家分享了python3将docx转换成pdf文件的具体代码,供大家参考,具体内容如下 直接上代码 # -*- encoding:utf-8 -*- """ author:lgh """ from win32com.client import Dispatch, constants, gencache ...
  • Word HTML(Python

    2021-01-30 10:42:40
    下载链接: 蓝奏云:https://gfdgdxi.lanzous.com/b01nzalvc,密码:fik7 迅雷网盘:https://pan.xunlei.com/s/VMSG9IqahsL8eJBeSU4FTbmqA1,提取码:etwi ...Gitee:https://gitee.com/gfdgd-xi/word-to-html
  • ubuntu 下 python 将ppt,word 转换为pdf.

    千次阅读 2020-03-04 14:13:34
    pdf to image),另一篇是:python将ppt文件转换为jpg图片. 这两篇博客都是讲如何将word,ppt转换为图片,但是这些方法都是在win系统中实现的,而在ubuntu下根本无法运行代码.原因时转换过程中借用的时win的接口库win32...
  • PythonWord转PDF

    千次阅读 2018-02-26 10:38:10
    还在为找转换PDF格式的工具而发愁吗?还在为转换要钱而烦恼吗?现在机会来了!Dolphin Long手把手教你使用PythonWord转化成PDF。首先我们来看一下我们...
  • 通过python实现批量excel转pdf代码。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,989
精华内容 7,595
关键字:

word转pdfpython

python 订阅