精华内容
下载资源
问答
  • word文档最大可以多大
    千次阅读
    2020-11-28 03:03:09

    工作中,有时候碰到需要将一个比较大的word按照指定的页数分割成若干个小的word文档,下面提供分割的方法供参考:

    一、按照单页拆分

    1、在Word里面打开那个需要分割的文档(假设它的文件名叫做“test.doc”);

    2、键入ALT+F11打开VBA编辑器,选择菜单“插入-模块”,或者键入ALT+F8打开宏命令窗口,或者点文档内上面的“工具”→“宏”→“宏”→找到这个宏→“运行”即可;

    3、粘贴下面的代码:

    Option Explicit

    Sub SplitPagesAsDocuments()

    Dim oSrcDoc As Document, oNewDoc As Document

    Dim strSrcName As String, strNewName As String

    Dim oRange As Range

    Dim nIndex As Integer

    Dim fso As Object

    Set fso = CreateObject("Scripting.FileSystemObject")

    Set oSrcDoc = ActiveDocument

    Set oRange = oSrcDoc.Content

    oRange.Collapse wdCollapseStart

    oRange.Select

    For nIndex = 1 To ActiveDocument.Content.Information(wdNumberOfPagesInDocument)

    oSrcDoc.Bookmarks("\page").Range.Copy

    oSrcDoc.Windows(1).Activate

    Application.Browser.Target = wdBrowsePage

    Application.Browser.Next

    strSrcName = oSrcDoc.FullName

    strNewName = fso.BuildPath(fso.GetParentFolderName(strSrcName), _

    fso.GetBaseName(strSrcName) & "_" & nIndex & "." & fso.GetExtensionName(strSrcName))

    Set oNewDoc = Documents.Add

    Selection.Paste

    oNewDoc.SaveAs strNewName

    oNewDoc.Close False

    Next

    Set oNewDoc = Nothing

    Set oRange = Nothing

    Set oSrcDoc = Nothing

    Set fso = Nothing

    MsgBox "结束!"

    End Sub

    4、键入F5运行,看到“完成!”结束。

    5、检查当前文档所在路径下是否生成若干名为“原始文档_n.doc”(n代表其对应原始文档中的第几页)的文档,检查它们的内容是否就对应于原始文档每个页面的内容。

    二、按指定页动态拆分

    上述方法是按单页拆分的,如果想按照指定页数拆分,可使用下面的代码,其它步骤和上述按单页拆分方案相同。

    代码如下:

    Option Explicit

    Sub DynamicSplitPagesAsDocuments()

    Dim oSrcDoc As Document, oNewDoc As Document

    Dim strSrcName As String, strNewName As String

    Dim oRange As Range

    Dim nIndex As Integer, nSubIndex As Integer, nTotalPages As Integer, nBound As Integer

    Dim fso As Object

    Const nSteps = 3 //这里可以指定需要拆分的页数,如这里表示按照每3页拆分成一个小文档

    Set fso = CreateObject("Scripting.FileSystemObject")

    Set oSrcDoc = ActiveDocument

    Set oRange = oSrcDoc.Content

    nTotalPages = ActiveDocument.Content.Information(wdNumberOfPagesInDocument)

    oRange.Collapse wdCollapseStart

    oRange.Select

    For nIndex = 1 To nTotalPages Step nSteps

    Set oNewDoc = Documents.Add

    If nIndex + nSteps > nTotalPages Then

    nBound = nTotalPages

    Else

    nBound = nIndex + nSteps - 1

    End If

    For nSubIndex = nIndex To nBound

    oSrcDoc.Activate

    oSrcDoc.Bookmarks("\page").Range.Copy

    oSrcDoc.Windows(1).Activate

    Application.Browser.Target = wdBrowsePage

    Application.Browser.Next

    oNewDoc.Activate

    oNewDoc.Windows(1).Selection.Paste

    Next nSubIndex

    strSrcName = oSrcDoc.FullName

    strNewName = fso.BuildPath(fso.GetParentFolderName(strSrcName), _

    fso.GetBaseName(strSrcName) & "_" & (nIndex \ nSteps) & "." & fso.GetExtensionName(strSrcName))

    oNewDoc.SaveAs strNewName

    oNewDoc.Close False

    Next nIndex

    Set oNewDoc = Nothing

    Set oRange = Nothing

    Set oSrcDoc = Nothing

    Set fso = Nothing

    MsgBox "结束!"

    End Sub

    注意:

    如文档中有分节符分解后的文档会出现空白页,如要分解后不出现空白页,需要把文档中的分节符全部删除。

    分节符若全部替换,要注意替换后文档可能会出现排版混乱,这则需要自己手动排版了。

    分节符是指为表示节的结尾插入的标记。分节符包含节的格式设置元素,如页边距、页面的方向、页眉和页脚,以及页码的顺序。分节符用一条横贯屏幕的虚双线表示。

    删除分节符的方法:

    试着按住shift键,然后点击鼠标左键,然后将显示出来的分节符删掉即可。

    分节符和分页符的区别:

    分页符只是分页,前后还是同一节;

    分节符是分节,可以同一页中不同节,也可以分节的同时下一页。

    两者用法的最大区别在于页眉页脚与页面设置,比如:

    1、文档编排中,某几页需要横排,或者需要不同的纸张、页边距等,那么将这几页单独设为一节,与前后内容不同节;

    2、文档编排中,首页、目录等的页眉页脚、页码与正文部分需要不同,那么将首页、目录等作为单独的节;

    3、如果前后内容的页面编排方式与页眉页脚都一样,只是需要新的一页开始新的一章,那么一般用分页符即可,当然用分节符(下一页)也行。

    更多相关内容
  • 批量对word文档进行操作

    千次阅读 2022-02-11 15:42:46
    前面几章我们以经介绍了怎么批量对excel和ppt操作今天我们说说对word文档的批量操作 应用 python-docx允许您创建新文档以及对现有文档进行更改。实际上,它只允许您对现有文档进行更改;只是如果您从一个没有任何...

    导读

    前面几章我们以经介绍了怎么批量对excelppt操作今天我们说说对word文档的批量操作

    应用

    python-docx允许您创建新文档以及对现有文档进行更改。实际上,它只允许您对现有文档进行更改;只是如果您从一个没有任何内容的文档开始,一开始可能会觉得您是从头开始创建一个文档。

    这个特性是一个强大的特性。文档的外观很大程度上取决于删除所有内容时留下的部分。样式、页眉和页脚等内容与主要内容分开包含,允许您在起始文档中进行大量自定义,然后出现在您生成的文档中。

    让我们逐步完成创建文档的步骤,一次创建一个示例,从您可以对文档执行的两项主要操作开始,将其打开并保存。

    我这里做一个简单的演示

    还是先定义合并单元格函数,以便后续多次调用。由于处理Word中表格的代码与处理Excel不同,所以函数也要做微调。主要变化就是合并的函数表达,对于word中的表格,表达式是table.cell(row1,col1).merge(table.cell(row2,col2)),意思是将第row1行col1列到row2行col2列之间的表格合并(row2,col2要分别大于等于row1和col1)。需要注意的是cell(0,0)表示第一行第一列的单元格,以此类推。如下函数是在例28的基础上修改的。

    #定义合并单元格的函数    
    def Merge_cells(table,target_list,start_row,col):
        '''
        table: 是需要操作的表格
        target_list: 是目标列表,即含有重复数据的列表
        start_row: 是开始行,即表格中开始比对数据的行(需要将标题除开)
        col: 是需要处理数据的列
        '''
        start = 0 #开始行计数
        end = 0 #结束行计数
        reference = target_list[0] #设定基准,以列表中的第一个字符串开始
        for i in range(len(target_list)): #遍历列表
            if target_list[i] != reference: #开始比对,如果内容不同执行如下
                reference = target_list[i] #基准变成列表中下一个字符串
                end = i - 1 
                table.cell(start+start_row,col).merge(table.cell(end+start_row,col))
                start = end + 1
            if i == len(target_list) - 1: #遍历到最后一行,按如下操作
                end = i
                table.cell(start+start_row,col).merge(table.cell(end+start_row,col))
    

    然后需要读取word中相应表格里的数据,并提取出来,以便作为是否合并的判断基础。使用Document打开word文档,先查看一下其中表格的个数,以便我们锁定要处理的表格。由于word里面可能有隐藏表格,或者一个表格中有一段去掉了边框,让人看起来像是两个表格,直接在word中去数表格个数有时会不靠谱。通过len(doc.tables)看到,这个文档里面有2个表格。打开word文档,我们可以看到要处理的表格是第一个,即doc.tables[0]。如果情况较为复杂,我们可以打印表格中第一行单元格的内容进一步确认是否是我们需要处理的表格。确认好表格的序号后,就可以开始读取内容了。

    from docx import Document
    doc = Document("收货记录.docx")
    print("这个工作表有 {} 个表格。\n".format(len(doc.tables))) #查看表格中的个数,以便锁定我们要处理的表格
    
    print("第一个表格的第一行的单元格中的内容如下:")
    for i in doc.tables[0].rows[0].cells: #读取第一个表格的第一行的单元格中的内容
        print(i.text)
    
    
    第一个表格的第一行的单元格中的内容如下:
    序号
    供应商名称
    货物编码
    货物型号
    货物说明
    数量
    日期
    

    表格:
    在这里插入图片描述

    doc.tables[0].rows[0].cells[0].text
    '序号'
    

    接着:

    #读取word文档中的第一个表格的第二和第三列除标题和尾部总数行的数据
    doc = Document("收货记录.docx")
    table = doc.tables[0] #已确定是第一个表格,其索引是0
    supplier = [] #存储供应商名称
    pn = [] #存储物料编码
    max_row = len(table.rows) #获取第最大一行
    print("表格共有{}行".format(max_row))
    
    #读取第二行到29行,第2,3列中的数据
    for i in range(1,max_row-1):
        supplier_name = table.rows[i].cells[1].text #cells[1]指表格第二列
        supplier.append(supplier_name)
        
    for i in range(1,max_row-1):
        material_pn = table.rows[i].cells[2].text #cells[2]指表格第三列
        pn.append(material_pn)
        
    print("获取到{}个供应商名称,{}个物料编码。".format(len(supplier),len(pn)))
    
    
    表格共有30行
    获取到28个供应商名称,28个物料编码。
    
    Merge_cells(table,supplier,1,1) #开始合并行为2,索引为1;供应商名称是在2列,索引为1
    Merge_cells(table,pn,1,2) #开始合并行为2,索引为1;物料编码是在3列,索引为2
    doc.save("检查.docx")
    

    到这一步,合并单元格算是完成了,但结果如下图所示,原单元格中的内容全部集中在一起,造成了重复内容。我们需要重写这些单元格以覆盖掉重复的内容,即可得到我们想要的结果。

    结果:

    在这里插入图片描述

    细节介绍

    关于python-docx
    链接:传送门
    这里有关于操作的详细介绍
    在这里插入图片描述
    在这里插入图片描述

    特别介绍

    📣小白练手专栏,适合刚入手的新人欢迎订阅编程小白进阶

    📣python有趣练手项目里面包括了像《机器人尬聊》《恶搞程序》这样的有趣文章,还有关于python自动化办公的库介绍可以让你快乐学python练手项目专栏

    📣另外想学JavaWeb进厂的同学可以看看这个专栏:传送们

    📣这是个冲刺大厂面试专栏还有算法比赛练习我们一起加油 上岸之路

    点击直接资料领取

    这里有python,Java学习资料还有有有趣好玩的编程项目,更有难寻的各种资源。反正看看也不亏。

    展开全文
  • 打开后,zd可以看到文档中只显示了一半的回文本。2、选择要设置的文本,右键单击鼠标,然后单击要输入的段落。3、输入后,将页面切换到缩进和间距答。4、然后找到下面的行距,单击行距下拉按钮选择单行间距或最小值...

    因为设置了固定行距,导致部分文字无法显示,解决办法如下:1、首先打开要设置的文档。打开后,zd可以看到文档中只显示了一半的回文本。2、选择要设置的文本,右键单击鼠标,然后单击要输入的段落。3、输入后,将页面切换到缩进和间距答。4、然后找到下面的行距,单击行距下拉按钮选择单行间距或最小值。5、选择后,单击确定,以便您可以看到显示的所有字符www.mh456.com防采集。

    因为设置百了固定行距,导致部分文字无法显示,设置方法如下:

    Word文档里编辑文字的时候,一修改后面的字就自动删除,是因为Word进入了改写模式,解决方法: 1、电脑打开Word文档。2、打开Word文档编辑好文字,但是出现一个黑色框框把文字框住,这就是进入了

    1、首先打度开需要设置的文档,打开了之后可以看到文档里面的文字只显示了一半。

    WORD是目录里出现正文的文字,是因为正文使用了标题样式字体,将相关正文文本字体样式设置“正知文”,然后跟新目录即可消除。方法步骤如下: 1、打开需要操作的WORD文档,选中相关文本,在开始

    2、选中问需要设置的文字,右键单击鼠标点击段落进入。

    word文档中选中多个不在一起的文字,可借助Ctrl键实现选中。方法步骤如下: 1、打开需要操作的WORD文档,使用鼠标先选中任意相关文字。2、按住Ctrl键不放,在通过鼠标依次点击拖动即可继续选中不

    3、进入了之后,将页面切换到答缩进和间距。

    可能你的行距太小了,在“格式”菜单下打开“段落”,里面的行距调整一下就可以了

    4、然后在下面找到行距,并点击行距的下拉按钮专,选择单倍行距或者是最小值。

    1、电脑打开Word文档,然后选中倾斜的文字。2、选中文字后,点击文字选项中的倾斜图标。3、点击倾斜图标后,文字就不倾斜了。4、如果是复制过来的文字,点击鼠标右键,然后选择只粘贴文本。5、选择只粘贴

    5、选择了属之后点击确定,这样就可以看到文字全部显示出来了,

    word表格中文字显示不全的解决方法

    word文档里的文字只显示一半zd的原因是:文字段落的行距设成了“固定值”,而固定值数值较小。在字体较大的情况下,为了保持行距的固定值,只能将文字显示一部分,如图:

    版 解决方法如下:

    方法一:

    1、先选中文字,点击菜单中“格式”下的“段落”;

    2、在“段落”对话框中点击“缩进和间距”,将行距下的“固定值”调整为“最小值”,或者“单倍行距”等其它行距。

    说明:“固定值”的意思是永远保持设定的行距不变,“最小值”在字体较大而行距较小时会自动调整,将文字全部显示权出来。

    方法二:将字体缩小,直到能完全显示。

    说明:不建议使用这种方法。

    以WPS 2019版为例

    1、打开文档

    2、选中表格,右键点击“自动调整”,进行设置即可~

    把行距改大就可以了。具体:选中段落——右键——段落——缩进和间距——行距本回答被提问者采纳

    内容来自www.mh456.com请勿采集。

    展开全文
  • 如何将word文档转换为图片

    千次阅读 2020-12-04 23:01:12
    前段时间换工作,在BOSS直聘上看到一个有意思的功能,上传docx格式的简历,能够以图片的形式在线预览,并且图片还添加了水印,笔者对此...image,通过两步可以最终实现该转换。一、环境准备首先进行环境准备工作,把...

    前段时间换工作,在BOSS直聘上看到一个有意思的功能,上传docx格式的简历,能够以图片的形式在线预览,并且图片还添加了水印,笔者对此比较感兴趣,就摸索着实现方法。网上逛了一圈,对于docx直接转图片这种转换没有什么有效的信息,不过结合获取的信息,笔者倒是想了一个曲线救国的法子,docx->pdf, pdf->image,通过两步可以最终实现该转换。

    一、环境准备

    首先进行环境准备工作,把需要用到的工具都安装配置好:

    1、安装pandoc

    Pandoc是由John MacFarlane开发的标记语言转换工具,可实现不同标记语言间的格式转换,堪称该领域中的“瑞士军刀”。该工具使用Haskell语言编写,以命令行形式实现与用户的交互,可支持多种操作系统。简而言之,pandoc就是一款转换工具,可以把格式A的文档转换为格式B的文档,就本文的目标来讲,主要用它实现了docx->pdf的转换。

    根据系统类别选择对应的安装包,安装完成后将其安装目录添加到系统路径中,windows版本的安装完成后会自动添加,不用额外设置。

    2、安装miktex

    MikTex是一款基于Tex的排版引擎。TeX 在不同的硬件和操作系统上有不同的实现版本。这就像C语言,在不同的操作系统中有不同的编译系统,例如Linux 下的gcc,Windows 下的Visual C++ 等。有时,一种操作系统里也会有好几种的TeX系统。目前常见的Unix/Linux 下的TeX系统是Texlive,Windows 下则有MiKTeX和fpTeX。CTeX指的是CTeX中文套装的简称,是把MiKTeX和一些常用的相关工具,如GSview,WinEdt 等包装在一起制作的一个简易安装程序,并对其中的中文支持部分进行了配置,使得安装后马上就可以使用中文。

    该排版工具是docx->pdf转换时不可获取的,否则无法实现转换。

    下载地址:https://miktex.org/   根据系统类别选择合适的版本,安装完成后将安装目录添加到系统路径。

    3、安装poppler

    代码实现中引用了一个开源库pdf2image,而这个库又引用了poppler,所以需要安装该环境。Poppler是一个基于xpdf-3.0的用于操作pdf的库,其中poppler-utils是建立在Poppler的库API上的工具集合,用于管理PDF和提取内容,主要工具如下:

    pdfdetach – 从PDF中提取嵌入式文档;

    pdffonts – 列出PDF中使用的字体;

    pdfimages – 从PDF中以原始分辨率提取所有嵌入式图像;

    pdfinfo – 列出PDF的所有信息;

    pdfseparate – 从PDF中提取单个页面;

    pdftocairo – 使用cairo将单页从PDF转换为矢量或位图格式;

    pdftohtml – 将PDF转换为HTML格式的保留格式;

    pdftoppm – 将PDF页面转换为位图;

    pdftops – 将PDF转换为可打印的PS格式;

    pdftotext – 从PDF中提取所有文本;

    pdfunite – 合并几个PDF。

    pdf2image使用了pdftoppm和pdfinfo这两个工具,用来将pdf转换为图片和获取pdf的文档页数,代码稍后会列出。

    下载地址:https://github.com/Belval/pdf2image  根据系统类别选择对应的版本,安装完成后将安装目录下的bin目录添加到系统路径。

    4、字体下载

    用来生成水印时使用,笔者下载的是SimSun宋体,下载地址:https://www.fontke.com/font/10132367/download/,也可以下载其他字体,看个人选择。

    完成上边四步环境就配置好了,笔者的电脑是Windows10,当然以上工具同样支持linux和mac环境,每个工具的官档都标注了支持的系统版本。环境配置好后接下来就是coding环节了,通过程序来实现转换过程的自动化调用,笔者会列出代码的目录结构,并依次说明其用途。

    二、代码实现

    关于实现这部分,笔者使用的开发语言是python36,以下为目录结构:

    1、font目录

    该目录存放的是下载好的字体文件,供代码中引用。

    2、pdf目录

    该目录存放转换之后的pdf文件。

    3、target目录

    该目录存放最终转换后的图片,图片为以时间戳命名的png图片,格式可以指定。

    4、config.py

    配置文件,存放了目录、图片大小、水印等配置,代码如下:

    Python

    import os

    # 根目录

    BASE_DIR = os.path.dirname(__file__)

    # pdf默认输出路径

    DEFAULT_OUTPUT_DIR = os.path.join(BASE_DIR, 'pdf')

    # 最终生成的图片存放在此目录

    TARGET_DIR = os.path.join(BASE_DIR, 'target')

    # 水印字体

    FONT_FILE = os.path.join(BASE_DIR, "font/simsun.ttf")

    # 单张图片的宽高,PIL支持图片的最大宽度1700

    IMAGE_WIDTH = 1700

    IMAGE_HEIGHT = 2200

    # 水印位置-left和top

    WATERMARK_LEFT = 0

    WATERMARK_TOP = 1800

    # 水印图片背景色-白色透明,最后一位表示透明度0~255,0为透明

    BACKGROUND_COLOR = (255, 255, 255, 0)

    #水印字体颜色-红色 60透明度

    FONT_COLOR = (255, 0, 0, 60)

    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

    importos

    # 根目录

    BASE_DIR=os.path.dirname(__file__)

    # pdf默认输出路径

    DEFAULT_OUTPUT_DIR=os.path.join(BASE_DIR,'pdf')

    # 最终生成的图片存放在此目录

    TARGET_DIR=os.path.join(BASE_DIR,'target')

    # 水印字体

    FONT_FILE=os.path.join(BASE_DIR,"font/simsun.ttf")

    # 单张图片的宽高,PIL支持图片的最大宽度1700

    IMAGE_WIDTH=1700

    IMAGE_HEIGHT=2200

    # 水印位置-left和top

    WATERMARK_LEFT=0

    WATERMARK_TOP=1800

    # 水印图片背景色-白色透明,最后一位表示透明度0~255,0为透明

    BACKGROUND_COLOR=(255,255,255,0)

    #水印字体颜色-红色 60透明度

    FONT_COLOR=(255,0,0,60)

    5、doc2pdf.py

    该模块封装了pandoc命令行工具的调用,实现了docx文档到pdf的转换过程

    Python

    import os

    import uuid

    from subprocess import Popen, PIPE

    def _load_doc(doc):

    doc = str(doc)

    if not os.path.exists(doc):

    raise FileNotFoundError("file {} not found".format(doc))

    _, doc_name = os.path.split(doc)

    if not doc_name.endswith('.docx'):

    raise TypeError("Only support word doc with suffix '.docx'")

    return doc

    def _build_command(doc_path, output_dir, pdf_name=None, pdf_engine=None):

    args = ['pandoc', '--pdf-engine=xelatex']

    # args = ['pandoc', '--pdf-engine=lualatex']

    if pdf_engine is not None:

    # MikTex包含了两种pandoc支持的Tex

    if pdf_engine not in ("xelatex", "lualatex"):

    raise ValueError("not supported pdf-engine: {}".format(pdf_engine))

    else:

    args[1] = '--pdf-engine={}'.format(pdf_engine)

    if pdf_name is None:

    pdf_name = str(uuid.uuid4()) + '.pdf'

    if not os.path.isdir(output_dir):

    raise NotADirectoryError("{} is not a existed directory".format(output_dir))

    pdf_path = os.path.join(output_dir, pdf_name)

    args.append('-o')

    args.append(pdf_path)

    args.append(doc_path)

    # 设置字体避免中文乱码无法输出问题,SimSun是宋体, MicrosoftYaHei是微软雅黑

    args.append('-V')

    args.append('mainfont="MicrosoftYaHei"')

    # args.append('-V')

    # args.append('margin-left=0in')

    return args, pdf_path

    def doc2pdf(source, pdf_path):

    doc_path = _load_doc(source)

    cmd, output_pdf = _build_command(doc_path, pdf_path)

    # run cmd

    print("doc to pdf, converting...")

    Popen(cmd, stderr=PIPE, stdout=PIPE).communicate()

    print("job done!")

    return output_pdf

    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

    importos

    importuuid

    fromsubprocessimportPopen,PIPE

    def_load_doc(doc):

    doc=str(doc)

    ifnotos.path.exists(doc):

    raiseFileNotFoundError("file {} not found".format(doc))

    _,doc_name=os.path.split(doc)

    ifnotdoc_name.endswith('.docx'):

    raiseTypeError("Only support word doc with suffix '.docx'")

    returndoc

    def_build_command(doc_path,output_dir,pdf_name=None,pdf_engine=None):

    args=['pandoc','--pdf-engine=xelatex']

    # args = ['pandoc', '--pdf-engine=lualatex']

    ifpdf_engineisnotNone:

    # MikTex包含了两种pandoc支持的Tex

    ifpdf_enginenotin("xelatex","lualatex"):

    raiseValueError("not supported pdf-engine: {}".format(pdf_engine))

    else:

    args[1]='--pdf-engine={}'.format(pdf_engine)

    ifpdf_nameisNone:

    pdf_name=str(uuid.uuid4())+'.pdf'

    ifnotos.path.isdir(output_dir):

    raiseNotADirectoryError("{} is not a existed directory".format(output_dir))

    pdf_path=os.path.join(output_dir,pdf_name)

    args.append('-o')

    args.append(pdf_path)

    args.append(doc_path)

    # 设置字体避免中文乱码无法输出问题,SimSun是宋体, MicrosoftYaHei是微软雅黑

    args.append('-V')

    args.append('mainfont="MicrosoftYaHei"')

    # args.append('-V')

    # args.append('margin-left=0in')

    returnargs,pdf_path

    defdoc2pdf(source,pdf_path):

    doc_path=_load_doc(source)

    cmd,output_pdf=_build_command(doc_path,pdf_path)

    # run cmd

    print("doc to pdf, converting...")

    Popen(cmd,stderr=PIPE,stdout=PIPE).communicate()

    print("job done!")

    returnoutput_pdf

    6、pdf2image.py

    一个开源的python库,只包含了一个文件,笔者直接复制过来使用的。主要封装了poppler的命令行调用,实现pdf到图片的转换。

    Python

    """

    pdf2image is a light wrapper for the poppler-utils tools that can convert your

    PDFs into Pillow images.

    """

    import os

    import re

    import tempfile

    import uuid

    from io import BytesIO

    from subprocess import Popen, PIPE

    from PIL import Image

    def convert_from_path(pdf_path, dpi=200, output_folder=None, first_page=None, last_page=None, fmt='ppm', thread_count=1, userpw=None):

    """

    Description: Convert PDF to Image will throw whenever one of the condition is reached

    Parameters:

    pdf_path -> Path to the PDF that you want to convert

    dpi -> Image quality in DPI (default 200)

    output_folder -> Write the resulting images to a folder (instead of directly in memory)

    first_page -> First page to process

    last_page -> Last page to process before stopping

    fmt -> Output image format

    thread_count -> How many threads we are allowed to spawn for processing

    userpw -> PDF's password

    """

    page_count = __page_count(pdf_path, userpw)

    if thread_count < 1:

    thread_count = 1

    if first_page is None:

    first_page = 1

    if last_page is None or last_page > page_count:

    last_page = page_count

    # Recalculate page count based on first and last page

    page_count = last_page - first_page + 1

    if thread_count > page_count:

    thread_count = page_count

    reminder = page_count % thread_count

    current_page = first_page

    processes = []

    for _ in range(thread_count):

    # A unique identifier for our files if the directory is not empty

    uid = str(uuid.uuid4())

    # Get the number of pages the thread will be processing

    thread_page_count = page_count // thread_count + int(reminder > 0)

    # Build the command accordingly

    args, parse_buffer_func = __build_command(['pdftoppm', '-r', str(dpi), pdf_path], output_folder, current_page, current_page + thread_page_count - 1, fmt, uid, userpw)

    # Update page values

    current_page = current_page + thread_page_count

    reminder -= int(reminder > 0)

    # Spawn the process and save its uuid

    processes.append((uid, Popen(args, stdout=PIPE, stderr=PIPE)))

    images = []

    for uid, proc in processes:

    data, _ = proc.communicate()

    if output_folder is not None:

    images += __load_from_output_folder(output_folder, uid)

    else:

    images += parse_buffer_func(data)

    return images

    def convert_from_bytes(pdf_file, dpi=200, output_folder=None, first_page=None, last_page=None, fmt='ppm', thread_count=1, userpw=None):

    """

    Description: Convert PDF to Image will throw whenever one of the condition is reached

    Parameters:

    pdf_file -> Bytes representing the PDF file

    dpi -> Image quality in DPI

    output_folder -> Write the resulting images to a folder (instead of directly in memory)

    first_page -> First page to process

    last_page -> Last page to process before stopping

    fmt -> Output image format

    thread_count -> How many threads we are allowed to spawn for processing

    userpw -> PDF's password

    """

    with tempfile.NamedTemporaryFile('wb') as f:

    f.write(pdf_file)

    f.flush()

    return convert_from_path(f.name, dpi=dpi, output_folder=output_folder, first_page=first_page, last_page=last_page, fmt=fmt, thread_count=thread_count, userpw=userpw)

    def pdf_page_count(pdf, password=None):

    return __page_count(pdf, password)

    def __build_command(args, output_folder, first_page, last_page, fmt, uid, userpw):

    if first_page is not None:

    args.extend(['-f', str(first_page)])

    if last_page is not None:

    args.extend(['-l', str(last_page)])

    parsed_format, parse_buffer_func = __parse_format(fmt)

    if parsed_format != 'ppm':

    args.append('-' + parsed_format)

    if output_folder is not None:

    args.append(os.path.join(output_folder, uid))

    if userpw is not None:

    args.extend(['-upw', userpw])

    return args, parse_buffer_func

    def __parse_format(fmt):

    if fmt[0] == '.':

    fmt = fmt[1:]

    if fmt == 'jpeg' or fmt == 'jpg':

    return 'jpeg', __parse_buffer_to_jpeg

    if fmt == 'png':

    return 'png', __parse_buffer_to_png

    # Unable to parse the format so we'll use the default

    return 'ppm', __parse_buffer_to_ppm

    def __parse_buffer_to_ppm(data):

    images = []

    index = 0

    while index < len(data):

    code, size, rgb = tuple(data[index:index + 40].split(b'\n')[0:3])

    size_x, size_y = tuple(size.split(b' '))

    file_size = len(code) + len(size) + len(rgb) + 3 + int(size_x) * int(size_y) * 3

    images.append(Image.open(BytesIO(data[index:index + file_size])))

    index += file_size

    return images

    def __parse_buffer_to_jpeg(data):

    return [

    Image.open(BytesIO(image_data + b'\xff\xd9'))

    for image_data in data.split(b'\xff\xd9')[:-1] # Last element is obviously empty

    ]

    def __parse_buffer_to_png(data):

    images = []

    index = 0

    while index < len(data):

    file_size = data[index:].index(b'IEND') + 8 # 4 bytes for IEND + 4 bytes for CRC

    images.append(Image.open(BytesIO(data[index:index+file_size])))

    index += file_size

    return images

    def __page_count(pdf_path, userpw=None):

    try:

    if userpw is not None:

    proc = Popen(["pdfinfo", pdf_path, '-upw', userpw], stdout=PIPE, stderr=PIPE)

    else:

    proc = Popen(["pdfinfo", pdf_path], stdout=PIPE, stderr=PIPE)

    out, err = proc.communicate()

    except:

    raise Exception('Unable to get page count. Is poppler installed and in PATH?')

    try:

    # This will throw if we are unable to get page count

    return int(re.search(r'Pages:\s+(\d+)', out.decode("utf8", "ignore")).group(1))

    except:

    raise Exception('Unable to get page count. %s' % err.decode("utf8", "ignore"))

    def __load_from_output_folder(output_folder, uid):

    return [Image.open(os.path.join(output_folder, f)) for f in sorted(os.listdir(output_folder)) if uid in f]

    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

    83

    84

    85

    86

    87

    88

    89

    90

    91

    92

    93

    94

    95

    96

    97

    98

    99

    100

    101

    102

    103

    104

    105

    106

    107

    108

    109

    110

    111

    112

    113

    114

    115

    116

    117

    118

    119

    120

    121

    122

    123

    124

    125

    126

    127

    128

    129

    130

    131

    132

    133

    134

    135

    136

    137

    138

    139

    140

    141

    142

    143

    144

    145

    146

    147

    148

    149

    150

    151

    152

    153

    154

    155

    156

    157

    158

    159

    160

    161

    162

    163

    164

    165

    166

    167

    168

    169

    170

    171

    172

    173

    174

    175

    176

    """

    pdf2image is a light wrapper for the poppler-utils tools that can convert your

    PDFs into Pillow images.

    """

    importos

    importre

    importtempfile

    importuuid

    fromioimportBytesIO

    fromsubprocessimportPopen,PIPE

    fromPILimportImage

    defconvert_from_path(pdf_path,dpi=200,output_folder=None,first_page=None,last_page=None,fmt='ppm',thread_count=1,userpw=None):

    """

    Description: Convert PDF to Image will throw whenever one of the condition is reached

    Parameters:

    pdf_path -> Path to the PDF that you want to convert

    dpi -> Image quality in DPI (default 200)

    output_folder -> Write the resulting images to a folder (instead of directly in memory)

    first_page -> First page to process

    last_page -> Last page to process before stopping

    fmt -> Output image format

    thread_count -> How many threads we are allowed to spawn for processing

    userpw -> PDF's password

    """

    page_count=__page_count(pdf_path,userpw)

    ifthread_count<1:

    thread_count=1

    iffirst_pageisNone:

    first_page=1

    iflast_pageisNoneorlast_page>page_count:

    last_page=page_count

    # Recalculate page count based on first and last page

    page_count=last_page-first_page+1

    ifthread_count>page_count:

    thread_count=page_count

    reminder=page_count%thread_count

    current_page=first_page

    processes=[]

    for_inrange(thread_count):

    # A unique identifier for our files if the directory is not empty

    uid=str(uuid.uuid4())

    # Get the number of pages the thread will be processing

    thread_page_count=page_count//thread_count+int(reminder>0)

    # Build the command accordingly

    args,parse_buffer_func=__build_command(['pdftoppm','-r',str(dpi),pdf_path],output_folder,current_page,current_page+thread_page_count-1,fmt,uid,userpw)

    # Update page values

    current_page=current_page+thread_page_count

    reminder-=int(reminder>0)

    # Spawn the process and save its uuid

    processes.append((uid,Popen(args,stdout=PIPE,stderr=PIPE)))

    images=[]

    foruid,procinprocesses:

    data,_=proc.communicate()

    ifoutput_folderisnotNone:

    images+=__load_from_output_folder(output_folder,uid)

    else:

    images+=parse_buffer_func(data)

    returnimages

    defconvert_from_bytes(pdf_file,dpi=200,output_folder=None,first_page=None,last_page=None,fmt='ppm',thread_count=1,userpw=None):

    """

    Description: Convert PDF to Image will throw whenever one of the condition is reached

    Parameters:

    pdf_file -> Bytes representing the PDF file

    dpi -> Image quality in DPI

    output_folder -> Write the resulting images to a folder (instead of directly in memory)

    first_page -> First page to process

    last_page -> Last page to process before stopping

    fmt -> Output image format

    thread_count -> How many threads we are allowed to spawn for processing

    userpw -> PDF's password

    """

    withtempfile.NamedTemporaryFile('wb')asf:

    f.write(pdf_file)

    f.flush()

    returnconvert_from_path(f.name,dpi=dpi,output_folder=output_folder,first_page=first_page,last_page=last_page,fmt=fmt,thread_count=thread_count,userpw=userpw)

    defpdf_page_count(pdf,password=None):

    return__page_count(pdf,password)

    def__build_command(args,output_folder,first_page,last_page,fmt,uid,userpw):

    iffirst_pageisnotNone:

    args.extend(['-f',str(first_page)])

    iflast_pageisnotNone:

    args.extend(['-l',str(last_page)])

    parsed_format,parse_buffer_func=__parse_format(fmt)

    ifparsed_format!='ppm':

    args.append('-'+parsed_format)

    ifoutput_folderisnotNone:

    args.append(os.path.join(output_folder,uid))

    ifuserpwisnotNone:

    args.extend(['-upw',userpw])

    returnargs,parse_buffer_func

    def__parse_format(fmt):

    iffmt[0]=='.':

    fmt=fmt[1:]

    iffmt=='jpeg'orfmt=='jpg':

    return'jpeg',__parse_buffer_to_jpeg

    iffmt=='png':

    return'png',__parse_buffer_to_png

    # Unable to parse the format so we'll use the default

    return'ppm',__parse_buffer_to_ppm

    def__parse_buffer_to_ppm(data):

    images=[]

    index=0

    whileindex

    code,size,rgb=tuple(data[index:index+40].split(b'\n')[0:3])

    size_x,size_y=tuple(size.split(b' '))

    file_size=len(code)+len(size)+len(rgb)+3+int(size_x)*int(size_y)*3

    images.append(Image.open(BytesIO(data[index:index+file_size])))

    index+=file_size

    returnimages

    def__parse_buffer_to_jpeg(data):

    return[

    Image.open(BytesIO(image_data+b'\xff\xd9'))

    forimage_dataindata.split(b'\xff\xd9')[:-1]# Last element is obviously empty

    ]

    def__parse_buffer_to_png(data):

    images=[]

    index=0

    whileindex

    file_size=data[index:].index(b'IEND')+8# 4 bytes for IEND + 4 bytes for CRC

    images.append(Image.open(BytesIO(data[index:index+file_size])))

    index+=file_size

    returnimages

    def__page_count(pdf_path,userpw=None):

    try:

    ifuserpwisnotNone:

    proc=Popen(["pdfinfo",pdf_path,'-upw',userpw],stdout=PIPE,stderr=PIPE)

    else:

    proc=Popen(["pdfinfo",pdf_path],stdout=PIPE,stderr=PIPE)

    out,err=proc.communicate()

    except:

    raiseException('Unable to get page count. Is poppler installed and in PATH?')

    try:

    # This will throw if we are unable to get page count

    returnint(re.search(r'Pages:\s+(\d+)',out.decode("utf8","ignore")).group(1))

    except:

    raiseException('Unable to get page count. %s'%err.decode("utf8","ignore"))

    def__load_from_output_folder(output_folder,uid):

    return[Image.open(os.path.join(output_folder,f))forfinsorted(os.listdir(output_folder))ifuidinf]

    7、main.py

    入口主程序,传入doc文档,得到png图片^_^

    Python

    import os

    import time

    from PIL import Image

    from PIL import ImageFont

    from PIL import ImageDraw

    from config import *

    from pdf2image import convert_from_path, pdf_page_count

    from doc2pdf import doc2pdf

    def doc2image(doc, fmt='png', output_dir=None, watermark=None, fpage=None, lpage=None):

    if output_dir is None:

    output_dir = TARGET_DIR

    target_name = os.path.join(output_dir, "{}.{}".format(int(time.time()), fmt))

    temp_pdf = doc2pdf(doc, pdf_path=DEFAULT_OUTPUT_DIR)

    if fpage is None:

    fpage = 1

    if lpage is not None:

    page_count = lpage - fpage + 1

    else:

    page_count = pdf_page_count(temp_pdf)

    print("pdf to image, converting...")

    to_image = _convert_pdf_to_image(temp_pdf, page_count, fmt, fpage, lpage)

    if watermark is not None:

    watermark_image = _make_watermark_image(to_image.size, watermark, page_count)

    # 合并内容图片和水印图片

    out = Image.alpha_composite(to_image, watermark_image)

    # out.show()

    # 转换为RGB模式才可保存为图片

    out.convert("RGB").save(target_name)

    else:

    to_image.save(target_name)

    print("job done!")

    def _convert_pdf_to_image(pdf, page_count, fmt, f, l, save=False):

    '''

    params:

    pdf: 待转换的pdf文件路径

    page_count: 要转换的页数

    fmt: 转换的图片格式

    f: 要转换的开始页数

    l: 结束页数

    save: 是否保留pdf文件,默认不保留

    '''

    # 根据页数转换为相应数量的图片

    image_list = convert_from_path(pdf, fmt=fmt, first_page=f, last_page=l)

    target_name = os.path.join(TARGET_DIR, "{}.{}".format(int(time.time()), fmt))

    to_image = Image.new('RGBA', (IMAGE_WIDTH, page_count * IMAGE_HEIGHT))

    for i, image in enumerate(image_list):

    # 计算高度,拼合单张图片到一整张图片上

    loc = (0, i * IMAGE_HEIGHT)

    to_image.paste(image, loc)

    if not save:

    try:

    os.remove(pdf)

    except Exception as e:

    print("fail to remove pdf, please check and remove it manually")

    return to_image

    def _make_watermark_image(image_size, watermark, count=1):

    '''

    生成水印图片

    params:

    image_size: 水印图片大小,与底板图片大小一致

    watermark: 水印文本

    count: 水印数量, 与内容页数保持一致

    '''

    fnt = ImageFont.truetype(font=FONT_FILE, size=80)

    watermark_image = Image.new('RGBA', image_size, color=BACKGROUND_COLOR)

    draw = ImageDraw.Draw(watermark_image)

    for i in range(1, count+1):

    draw.multiline_text((WATERMARK_LEFT, WATERMARK_TOP * i), watermark, font=fnt, fill=FONT_COLOR)

    return watermark_image

    if __name__ == '__main__':

    txt = "玩点coding https://vdcoding.com"

    doc = "resume.docx"

    doc2image(doc, watermark=txt)

    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

    83

    importos

    importtime

    fromPILimportImage

    fromPILimportImageFont

    fromPILimportImageDraw

    fromconfigimport*

    frompdf2imageimportconvert_from_path,pdf_page_count

    fromdoc2pdfimportdoc2pdf

    defdoc2image(doc,fmt='png',output_dir=None,watermark=None,fpage=None,lpage=None):

    ifoutput_dirisNone:

    output_dir=TARGET_DIR

    target_name=os.path.join(output_dir,"{}.{}".format(int(time.time()),fmt))

    temp_pdf=doc2pdf(doc,pdf_path=DEFAULT_OUTPUT_DIR)

    iffpageisNone:

    fpage=1

    iflpageisnotNone:

    page_count=lpage-fpage+1

    else:

    page_count=pdf_page_count(temp_pdf)

    print("pdf to image, converting...")

    to_image=_convert_pdf_to_image(temp_pdf,page_count,fmt,fpage,lpage)

    ifwatermarkisnotNone:

    watermark_image=_make_watermark_image(to_image.size,watermark,page_count)

    # 合并内容图片和水印图片

    out=Image.alpha_composite(to_image,watermark_image)

    # out.show()

    # 转换为RGB模式才可保存为图片

    out.convert("RGB").save(target_name)

    else:

    to_image.save(target_name)

    print("job done!")

    def_convert_pdf_to_image(pdf,page_count,fmt,f,l,save=False):

    '''

    params:

    pdf: 待转换的pdf文件路径

    page_count: 要转换的页数

    fmt: 转换的图片格式

    f: 要转换的开始页数

    l: 结束页数

    save: 是否保留pdf文件,默认不保留

    '''

    # 根据页数转换为相应数量的图片

    image_list=convert_from_path(pdf,fmt=fmt,first_page=f,last_page=l)

    target_name=os.path.join(TARGET_DIR,"{}.{}".format(int(time.time()),fmt))

    to_image=Image.new('RGBA',(IMAGE_WIDTH,page_count*IMAGE_HEIGHT))

    fori,imageinenumerate(image_list):

    # 计算高度,拼合单张图片到一整张图片上

    loc=(0,i*IMAGE_HEIGHT)

    to_image.paste(image,loc)

    ifnotsave:

    try:

    os.remove(pdf)

    exceptExceptionase:

    print("fail to remove pdf, please check and remove it manually")

    returnto_image

    def_make_watermark_image(image_size,watermark,count=1):

    '''

    生成水印图片

    params:

    image_size: 水印图片大小,与底板图片大小一致

    watermark: 水印文本

    count: 水印数量, 与内容页数保持一致

    '''

    fnt=ImageFont.truetype(font=FONT_FILE,size=80)

    watermark_image=Image.new('RGBA',image_size,color=BACKGROUND_COLOR)

    draw=ImageDraw.Draw(watermark_image)

    foriinrange(1,count+1):

    draw.multiline_text((WATERMARK_LEFT,WATERMARK_TOP*i),watermark,font=fnt,fill=FONT_COLOR)

    returnwatermark_image

    if__name__=='__main__':

    txt="玩点coding https://vdcoding.com"

    doc="resume.docx"

    doc2image(doc,watermark=txt)

    三、待完善的地方

    笔者从网上下载了份docx格式的简历模板,通过上边的程序转换后得到的图片如下:

    从图中可以看到个人信息部分的样式跑偏了,这部分是在docx->pdf过程中的排版引擎决定的,所以想要获得完美的图片,先要好好研究下排版引擎的使用,排版引擎可以加载多种扩展包,用来支持不同的排版格式。笔者只是兴趣使然,在短时间内实现了docx到图片的转换,没有深入研究排版引擎部分。关于这种转换笔者能力有限,只能以这种繁琐的方式实现,不过笔者倒是很好奇BOSS直聘是如何实现的,如果有机会真心希望交流一下。

    展开全文
  • word文档保存提示内存不足怎么办

    千次阅读 2021-07-25 00:46:50
    word文档保存提示内存不足怎么办》由会员分享,可在线阅读,更相关《word文档保存提示内存不足怎么办(5页珍藏版)》请在人人文库网上搜索。1、word文档保存提示内存不足怎么办可能有些网友会遇到word文档保存提示...
  • 只需要选中文字,在标尺处点击想要对齐到的位置:然后使用Tab键就能完成内容的对齐:一键处理标题、分页在内容超文档中,我们总会需要统一标题的字体、大小等等,你会怎么操作?一定也是逐个的选中,再进行调整...
  • 这是一个能够打开word文档和excel文档的程序,并且能够将excel中的内容显示到dategridview中,并且能够分析表格中的数据
  • 一、使用Python对word文档进行操作

    千次阅读 2021-02-18 14:14:39
    说白了,python就相当于windows操作系统,QQ就是跑在windows操作系统上的软件,QQ最大的作用是可以去聊天,说话。 在这里python-docx就相当于这里的qq 它主要的功能是对docx文件进行操作,管理等.(个人理解,非专业!...
  • Python写入word文档

    万次阅读 多人点赞 2019-09-25 00:48:53
    file=docx.Document()#创建内存中的word文档对象 file.add_paragraph("窗前明月光")#写入若干段落 file.add_paragraph("疑是地上霜") file.add_paragraph("举头望明月") file.add_paragraph("低头思故乡") file.save...
  • 假期最后一天,明天就要上班了,今天给大家分享20个Word实用技巧,希望你们能够喜欢。01、一键选择同样的内容编辑Word时,如果需要将相同样式的内容全选复制出去该怎么办呢?你是按住Ctrl键一个个的拖动鼠标选中吗?...
  • Word2007宝典

    2018-11-29 11:49:25
    Word2007在工具的细化方面做得很好,一个最大特点就是提供了很多可以满足不同风格的模板,熟悉并善于使用这些模板必将会使您的文档更加专业、精美。另外Word2007一个突出的亮点就是增加了“SmartArt”工具,它使用户...
  • 这个时候,SA systeam admin 就会开始直接让开发改代码了,比如增加一个入参,入参名进行一些变化,比如比天性进行变化,比如字符串类型修改最大长度,etc. 你会说,不行啊,要走变更流程啊,先更新接口说明文档啊 ...
  • 该插件充分利用Office Word编辑排版功能和谷歌、微软提供的机器翻译服务, 实现多种语言之间的机器翻译和人工翻译,可有效提高文字翻译效率, 是外语文档阅读和文字翻译工作者的得力助手。 官网 ...
  • Word打印特大字

    千次阅读 2021-07-01 20:34:57
    而有时因为各种工作的需要,如做标语、横幅剪字、装饰或制作广告等,往往需要打印出比较的字来。但可惜的是,一般情况下,一些常见的字处理软件只能够处理有限字号的字,并不能够满足我们打印大字地的要求。...
  • word文档表格中间出现空白怎么解决

    千次阅读 2021-06-25 05:27:30
    话题:word文档表格中间出现空白怎么解决?回答:word和execl使用技巧在Word中我们可以把着重号请到工具栏上。打开“工具—自定义”命令选项,打开“自定义”对话框。在“命令”卡下的“类别”栏里选中“所有命令”...
  • 说白了,python就相当于windows操作系统,QQ就是跑在windows操作系统上的软件,QQ最大的作用是可以去聊天,说话。 在这里python-docx就相当于这里的qq 它主要的功能是对docx文件进行操作,管理等.(个...
  • 一、word模板准备 模板的准备至关重要,而其中更重要的是模板中书签的设置命名,因为接下来的程序代码中,程序就是根据书签的名字,来定位word文档中的位置,从而进行数据的插入修改 当设计好表格,并且设计好书签...
  • #include "mainwindow.h" #include #include #include #include #include ... word.setControl(QString::fromUtf8("{000209FF-0000-0000-C000-...要的效果就是 word文档嵌入窗体。 请提供可行的代码或者链接
  • js 导出word 文档 doc docx

    万次阅读 2019-11-11 14:32:27
    在做项目时,要将富文本编辑器,或是html内容 导出为word。 先引入文件保存js ...docx体积更小,而且word2007也可以打开 1.引用插件html-docx.js <script src="html-docx.js"></script>...
  • 使用python将word文档转换为PDF文档

    千次阅读 2020-11-25 20:32:00
    欢迎关注”生信修炼手册”!对于windows系统的编程开发,微软一开始提供了基于VB语言的接口,后来又推出了.NET框架。对于word等offices套件的自动化操作,由于原生支持的特性...
  • 使用word2003提供的“另存为”或“另存为Web页”命令可以把文档保存为网页格式,word将删除不支持的格式设置并应用Web浏览器支持的设置。...Word文档另存为Web页的步骤为:1.执行“文件”菜单的“另存为…”(或...
  • 介绍一个用 Python docx和xlrd模块,对已有的Word模板与需求,对模板文件进行修改,然后批量生成Word文档的实例。
  • 宏宇Word文件修复向导,是专门针对受损的 Word文件进行修复的软件,可以修复因各种原因坏损的Word文档,绿色国产,针对Word中文版本内码进行了专门优化设计,修复结果采用TXT与 DOC方式进行输出。可以修复Word软件...
  • 主要介绍 word 文档中插入图片、设置图片大小;插入表格、设置表格样式、字体样式;章节设置:页面大小、边距等;设置页眉页脚等方法。
  • 计算机WORD选择题.doc

    2022-06-13 21:59:38
    一、单选题 1、在Word 2003主窗口呈最大化显示时,该窗口的右上角可以同时显示的按钮是_____按钮。 A:最小化、还原、最大化 B:还原、最大化和关闭 C:最小化、还原和关闭 D:还原和最大化 答案:C 2、如果想在Word...
  • CSL发现,当他新建一个word文档时,会得到一个名为"新建 Microsoft Office Word 文档.doc"的文件,再新建一个,则名为"新建 Microsoft Office Word 文档(2).doc",再新建,便是"新建 Microsoft Office Word 文档(3)....
  • Python-docx 模块读写 Word 文档基础(三):读取文档文本信息、表格信息、段落格式、字体格式等前言:1、获取文档章节信息:2、获取段落文字信息:3、获取文字格式信息:4、获取文档中表格信息:结尾:【Python与...
  • Python-docx 模块读写 Word 文档基础(一):创建文档、段落格式、字体格式设置方法前言:1、创建 Word 文档及基础用法:2、段落格式设置:3、字体格式设置:结尾:【Python与Word文档】专栏 前言: 从这篇博客开始...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 86,808
精华内容 34,723
关键字:

word文档最大可以多大