精华内容
下载资源
问答
  • 批量修改pdf文件名称(一)
    万次阅读
    2019-06-16 20:42:55

    1.打开文件
    2.前缀确定。因为想将文档名修改为"文件夹名称 + pdf文件名",所以取“地址倒数第一个\后面的字符,涉及到转义,所以用split(’\’)[-1]”
    3.循环修改每一个pdf文档名称。用到rename()函数;

    #1.单个文件改名字
    # -*- coding:utf-8 -*-
    import os
    path = input('请输入文件路径(结尾加上/):')
    
    #1.前缀是文件名
    AddrName = path.title()
    print("AddrName:" + AddrName)
    mark=AddrName.split('\\')[-1]  #注意mark1=link1.split('\')[-1]会报错
    print("mark:" + mark)
    
    #print(len([name for name in os.listdir(path) if os.path.isfile(os.path.join(path, name))]))  #文件个数
    
    #2.前缀是从键盘输入。
    #pre = input('请输入需要添加的前缀:')
    #mark = "[%s]" % pre
    
    oldnames = os.listdir(path)
    #print(oldnames) #列表输出文件中的文件
    for oldname in oldnames:
        #print(oldname)
        newname = "(" + mark+ ")" + oldname
        os.chdir(path)  # path = 就是要指定的路径
        os.rename(oldname,newname)
        print(oldname,'-->',newname)
    
    更多相关内容
  • PDF文件修改

    2016-03-02 17:11:00
    网上的PDF转WORD都是扯淡的,要么要钱,要么数字和公式之类的字符都化成了乌有,这款软件本人一直在用,免费,简单,注册文件已经打包在里面了,用一万年。
  • 怎么使用电脑wps对PDF文件进行修改

    千次阅读 2021-06-18 08:25:13
    怎么使用电脑wps对PDF文件进行修改一般为了防止别人修改我们的文件,我们会选择使用PDF文档。而且PDF可以高度有有效的保存矢量图。今天小编可就告诉大家怎么使用电脑wps对PDF文件进行修改。具体如下:1. 首先我们...

    怎么使用电脑wps对PDF文件进行修改

    一般为了防止别人修改我们的文件,我们会选择使用PDF文档。而且PDF可以高度有有效的保存矢量图。今天小编可就告诉大家怎么使用电脑wps对PDF文件进行修改。

    具体如下:

    1. 首先我们需要在电脑中打开wps。进入主界面之后我们选择上方的PDF。

    2840aaf3945bd579da5fcc229be93b48.png

    2然后在界面中将我们的PDF文件导入进去。

    498c840df1a1a84af99d8578d529e892.png

    3. 之后点击上方功能栏中的插入,再点击下一行中的文本框。

    6f9ce3a2e2bcee2233051334feff3cf4.png

    4. 点击之后即可打开文本框编辑界面。

    5. 在界面中画出一个文本框,输入文字。使用上方功能栏对颜色、位置等进行调整。

    81e4ef86bbfa83ce1b27951d44054e4a.png

    6. 全部修改好之后我们点击上方退出编辑这个选项。

    694a5985b123d2b506454306f65c2493.png

    7. 然后在预览界面中点击上方保存选项即可。

    823aa131ff3e99e58bc06752799a9d0c.png

    546756cf3052ef3271011f1e03bbb7ef.png

    以上就是使用电脑wps对PDF文件进行修改的方法。

    时间:2020-02-14 14:47 / 作者:百科全说

    5a63401d8fa2306cf372be578c407841.gif

    我们有时打开别人传过来的PDF文件,由于设置了限制编辑的密码,无法编辑,这时就需要我们取消设置的密码,然后才可以进行编辑.具体操作步骤如下:1. 双击打开限制编辑的PDF,在快捷方式下选择"编辑PDF"2. 这时就会弹出输入口令提示,口令不对就不能编辑.3. 这时我们需要打开工具下的"保护"如图.4. 在保护选项下,选择上方的"加密",然后弹出小窗选择"删除安全性设置"5. 接着就会弹出确认删除提醒,"确定&quot

    5a63401d8fa2306cf372be578c407841.gif

    今天给大家介绍一下电脑上的PDF文件如何设置朗读出来的具体操作步骤.1. 打开电脑,进入桌面,找到想要朗读的PDF文件.2. 在文件上右键,在打开的菜单中,选择"打开方式"选项3. 接着在打开的二级菜单中,选择Microsoft Edge的选项4. 如图,在打开的主页面,点击上方的"朗读此页内容"的选项5. 然后稍等一下,系统加载完成后,就会自动进行朗读PDF文件了6. 在右上方,我们可以点击暂停朗读的按钮,来暂停7. 朗读完之后,我们可以点击右上角的关闭图标,退出

    5a63401d8fa2306cf372be578c407841.gif

    今天给大家介绍一下电脑上的PDF文件怎么快速转换成HTML格式的具体操作步骤.1. 首先打开电脑上的浏览器,进入百度,输入PDF转换器在线编辑,进行搜索.2. 在结果中,选择一个编辑器链接,点击.3.  进入主页面后,点击上方的文档转换选项.4. 如图,在打开的菜单中,找到PDF转HTML选项,点击.5.如图,在打开的页面,点击页面中间的点击选择文件选项.6. 然后选择想要转换的PDF文档,点击右下方的开始转换按钮.7. 转换完成后,点击右下角的立即下载.8. 下载之后,打开文件所在的文件夹,如

    04/26 07:41

    5a63401d8fa2306cf372be578c407841.gif

    大家都知道,PDF文档可把文档的文本、格式、字体、颜色、分辨率、链接及图形图像、声音、动态影像等所有的信息封装在一个特殊的整合文件中,可阅读性非常高,但是对于用户来说,PDF文档也有一些缺点,那就是其内容不容易进行编辑修改,这给大家的工作带来了诸多的不方便。针对这个问题,捷速工作室研发出了一款优秀的PDF编辑工具——捷速PDF编辑器,该编辑器轻松解决了用户不可编辑PDF文件的烦恼,为大家带来了方便。下面和大家一起分享下pdf文件怎么修改。 1、上网下载一款捷速PDF编辑器,将其安装到电脑上。 2

    5a63401d8fa2306cf372be578c407841.gif

    PDF文件本身就不易编辑修改,很多的电脑用户将电脑系统升级为win10后,对于PDF的打开编辑使用可能就不是太了解了,win10系统下如何打开PDF文件并修改呢?平常我们在电脑上打开pdf文件都是依靠一些PDF阅读器,打开PDF文件并修改可就不能只依靠阅读器.下文,我们还是从实际操作使用来给大家分析一下win10系统下如何打开PDF文件并修改吧. 对于win10系统下如何打开PDF文件并修改这个问题,还是需要操作后进行解答,给出详细的操作步骤.说到win10系统下如何打开PDF并修改这个问题,我

    5a63401d8fa2306cf372be578c407841.gif

    相信很多小伙伴在日常办公中都会见到很多PDF文件,如果我们想要在其中修改或添加文本内容该怎么做呢?方法很简单,下面小编就来为大家介绍.具体如下:1. 首先,打开电脑上的PDF编辑器.进入后,点击页面上端的"文件",在弹出菜单中点击"打开",将我们要进行操作的文件添加进去.2. 点击上方菜单栏中的"编辑内容",在弹出菜单中点击"全部内容".之后文本内容周围就会出现方框,代表这个区域的文本是可编辑状态.3. 进入相应的文本框,就可

    5a63401d8fa2306cf372be578c407841.gif

    WPS表格是我们现在最常处理数据的一种办公软件,今天小编跟大家分享的是电脑WPS表格怎么将数据修改成中文大写金额样式.具体如下:1. 首先我们打开电脑中的一份WPS表格,在主界面中我们选中要转换为中文大写金额的数据.2. 选中之后右键.3. 在打开的窗口中我们点击"设置单元格格式"选项,此时会弹出一个窗口,4.在数字栏下,我们点击"特殊分类"选项.5. 选中"人民币大写"之后我们点击确定.6. 然后表格中的数据就会发生相应改变啦.以上就是电脑WP

    5a63401d8fa2306cf372be578c407841.gif

    当我们在使用电脑处理pdf文件的时候,为了更加方便地查看pdf文件,我们可以为其添加标签,具体应如何操作呢?接下来就由小编来告诉大家.具体如下:1. 第一步,打开电脑中的psd编辑器,进入软件主页后,点击左上角的打开按钮,然后选择一个需要编辑的pdf文件并打开.2. 第二步,成功打开pdf文件后,大家上方的视图标签,然后点击下拉菜单中的书签选项,点击后就可以在左侧看到书签栏.3. 第三步,如果想要新建一个书签的话,我们可以点击工具按钮,然后在文件中选择要设置为书签的内容,再点击新建书签按钮即可.

    5a63401d8fa2306cf372be578c407841.gif

    当我们在使用电脑的时候,如果想要对其中的pdf文件进行编辑的话,应如何操作呢?接下来就由小编来告诉大家.具体如下:1.第一步,打开电脑中的迅捷PDF编辑器.2.第二步,进入人家后,点击下方的打开更多文件按钮.3.第三步,选择需要的pdf文件并导入,然后点击上方菜单栏中的编辑内容选项.4.第四步,在pdf文档中,选中要调整的文字内容,然后输入新的内容.5.第五步,点击左上方的文件按钮.6.第六步,在下方弹出的选项卡中,点击另存为选项,将文件保存至桌面.7.第七步,返回电脑桌面,即可看到编辑完成的p

    展开全文
  • pdf不能直接编辑,所以pdf文件中的字体也是固定的,如果我们想要对pdf文件中文字的大小或颜色进行编辑的话就需要用编辑工具来辅助完成了,下面是具体的方法。 先找到迅捷pdf编辑器的下载站,进入后将编辑器下载...

    pdf不能直接编辑,所以pdf文件中的字体也是固定的,如果我们想要对pdf文件中文字的大小或颜色进行编辑的话就需要用编辑工具来辅助完成了,下面是具体的方法。


    先找到迅捷pdf编辑器的下载站,进入后将编辑器下载到电脑中来;


    打开下载好的编辑器,用编辑器打开要编辑的pdf文件;

    单击编辑内容按钮,使整个文档进入编辑状态;


    接着选中要编辑的文字,在左边的属性中对文字的大小颜色等进行修改;
    修改完成的文件:
    最后将文件保存下来就行。这就是给大家介绍pdf文件编辑修改用什么方法好的方法,大家可以按照步骤去动手操作下,就会了解整个编辑器的功能了。非常简单方便!
    展开全文
  • 在所有工具上处理尽可能多的文件-无广告-批处理:一次处理数百个文件-工作流程:使用多种工具轻松修改文件而无需重新启动上载-脱机工作:无限使用Smallpdf Desktop-数字签名:创建和存储数字签名★每月受到超过2000...
  • PDF 文件格式 基本结构

    千次阅读 2021-03-10 16:24:33
    PDF文件格式规范链接:https://opensource.adobe.com/dc-acrobat-sdk-docs/。官方链接仅仅文件格式的文档就有800多页,因此通读该文档并不是意见容易的事。 PDF不仅具有文本功能,还具有更多的功能:它可以包含.

    参考:https://resources.infosecinstitute.com/topic/pdf-file-format-basic-structure/

     

    PDF是一种可移植的文档格式,可用于显示包含文本,图像,多媒体元素,网页链接等内容。PDF文件格式规范链接:https://opensource.adobe.com/dc-acrobat-sdk-docs/。官方链接中仅仅文件格式的文档就有800多页,因此通读该文档并不是意见容易的事。

    PDF不仅具有文本功能,还具有更多的功能:它可以包含图像和其他多媒体元素,受密码保护,执行JavaScript等。下图显示了PDF文件的基本结构:


     

    下文中[]中的内容为上图中的结构体。 

    Header

    [PDFHeader]这是PDF文件的第一行,它指定文档使用的所用PDF规范的版本号.此处PDF文档版本为1.7.

    [PDFComment] 这部分是PDF文档的注释部分

    Body

    在PDF文档的正文中,有一些对象通常包括文本流,图像,其他多媒体元素等。“正文”部分用于保存所有显示给用户的文档数据。
    即[PDFObj] sPdfObj[0]-sPdfObj[12]都是Body部分。

    xref table

    这是交叉引用表,其中包含对文档中所有对象的引用。交叉引用表的目的是允许它随机访问文件中的对象,因此我们无需阅读整个PDF文档即可找到特定的对象。每个对象由交叉​​引用表中的一个条目表示,该条目始终长20个字节。让我们来看一个例子:

    xref
    0 14
    0000000000 65536 f
    0000000017 00000 n
    0000000066 00000 n
    0000000122 00000 n
    0000000258 00000 n
    0000000367 00000 n
    0000000500 00000 n
    0000000831 00000 n
    0000001013 00000 n
    0000001197 00000 n
    0000010222 00000 n
    0000010294 00000 n
    0000010366 00000 n
    0000010431 00000 n

     我们可以通过使用文本编辑器简单地打开PDF并滚动到文档底部来显示PDF文档的交叉引用表。

    0 14

    这行中的第一个数字0对应于对象编号,而第二列显示当前子节中的对象数量14。

    0000000000 65536 f
    0000000017 00000 n
    0000000066 00000 n

    。。。。。。

    每个对象由一个条目表示,该条目长20个字节(包括CRLF)。

    前10个字节是对象从PDF文档开始到该对象开始的偏移量。接下来是一个空格分隔符,其中另一个数字指定对象的世代号。之后,还有另一个空格分隔符,后跟字母“ f”或“ n”以指示对象是空闲的还是正在使用的。

     

    Trailer

    PDF Trailer 指定读取PDF文档的应用程序应如何找到交叉引用表和其他特殊对象。所有PDF阅读器都应从文件末尾开始阅读PDF。以下是一个Trailer示例:

    trailer
    <<
    /Root 1 0 R
    /Info 3 0 R
    /Size 14/ID[<EA61F2FE98704E5009E01A59031F93DD><EA61F2FE98704E5009E01A59031F93DD>]>>
    startxref
    10750
    %%EOF

    PDF文档的最后一行包含“ %% EOF”文件字符串的结尾。在文件标记末尾之前,有一行带有startxref字符串的行,用于指定从文件开头到交叉引用表的偏移量。在此例中,交叉引用表从偏移量10750字节开始。在此之前是Trailer字符串,用于指定当前部分的开始。此节的内容嵌入在<<和>>字符内(这是一个接受键值对的字典)。  

    我们可以看到此部分定义了几个键,每个键用于一个特定的动作。此部分指定以下键:

    • / Size [integer]:指定交叉引用表中的条目数(也对更新部分中的对象进行计数)。使用的号码不应是间接引用。
    • / Prev [integer]:指定从文件开头到上一个交叉引用节的偏移量,如果有多个交叉引用节,则使用此偏移量。该数字应为交叉引用。
    • / Root [dictionary]:指定文档目录对象的引用对象,这是一个特殊对象,其中包含指向不同种类的其他特殊对象的各种指针(稍后会对此进行更多介绍)。
    • / Encrypt [dictionary]:指定文档的加密字典。
    • / Info [dictionary]:指定文档信息字典的参考对象。
    • / ID [array]:指定由两个字节的未加密字符串组成的数组,这些字符串构成文件标识符。
    • / XrefStm [integer]:指定从文件开头到解码流中的交叉引用流的偏移量。这仅存在于混合引用文件中,如果我们也想打开文档,即使应用程序不支持压缩的参考流,也可以指定该文件。

    我们必须记住,如果以后再更新PDF文档,则可以修改初始结构。该更新通常在文件末尾附加其他元素。

    增量更新

    PDF的设计考虑了增量更新,因为我们可以在不重写整个文件的情况下将一些对象附加到PDF文件的末尾。因此,可以快速保存对PDF文档的更改。下图显示了PDF文档的新结构:

    我们可以看到PDF文档仍然包含原始的标题,正文,交叉引用表和trailer。此外,PDF文档中还添加了其他正文,交叉引用和trailer部分。其他交叉引用部分将仅包含已更改,替换或删除的对象的条目。删除的对象将保留在文件中,但将带有“ f”标记。每个trailer都需要以“ %% EOF”标签终止,并应包含/ Prev条目,该条目指向上一个交叉引用部分。

    在PDF版本1.4和更高版本中,我们可以在文档的目录字典中指定版本条目,以覆盖PDF标头中的默认版本。

    例子

    本篇文章所用示例文档下载地址:https://download.csdn.net/download/lacoucou/15709804

    此文档是使用wps创建的,内容仅仅有一行 ,其二进制结构如下图:

    010editor 模版解析出来的结构:

    PDF文件数据类型

    PDF 文件基本元素是 PDF 对象(PDF Object), PDF 对象包括直接对象(Direct Object)和间接对象(Indirect Object)。直接对象如下八种类型;间接对象,又叫 labelled object, 嵌套在关键词 n 0 obj 和 endobj 之间, 是用一种表示来标识一个 PDF 对象,通过标识来让别的 PDF 对象引用,这个标识叫做间接对象的 ID. https://lazymind.me/2017/10/pdf-structure/

    直接对象类型

    1. Boolean value(布尔)

      布尔类型,值只能是 true 和 false

    2. Integer and Real number(数值)

      数值类型,包括整数和实数,与普通编程语言中的数值类型大体相同。

    3. String(字符串)

      字符串类型,包括包含在圆括号 ( ) 内的文字字符串(literal string)和包含在单尖括号 < > 内的十六进制字符串(hexadecimal string)两种。

      例:

      1. (Hello World)
      2. <9ADCF1>
    4. Name(名字?)

      名字类型,用字符组成的字符串,用 / 作为前导符号,在 PDF 文件中具有唯一性,相同的名字表示相同的对象(the same sequence of character denotes the same object)。常见用在 Dictionary 里面作 Key,用来表示对象名称。

      例:

      /Page
      /Kid
    5. Array(数组)

      数组类型,存在于方括号 [ ] 内,元素可以是除 Stream 外的所有类型。PDF 中数组只支持一维数组。

      例:

      [/Page false 17 (hello)]  该数组包含了4种类型元素
    6. Dictionary(字典)

      字典类型,包含在双尖括号 << >> 内,每两个元素为一对,第一个为 key, 第二个为 value, key 只能是 Name 类型,value 可以是任意类型,即可以嵌套为 Dictionary

      例:

      <</Page 1 0 obj
      /Filter /FlateDecode
      /Name (Hello)>>
    7. Stream(流对象)

      流对象,是用字节表示的序列,长度理论上没限制。包含在 stream 和 endstream 之间。以 CRLF或 LF 结尾,不能单独以 CR 结尾。dicionary 里的内容用来描述该 stream 的相关信息。

      dictionary
      stream
          ......
      endstream
    8. Null object(空对象)

      空对象类型,用关键词 null 表示。

    间接对象类型

    使用 unique object identifier 来表示,方便其他对象引用。结构如下:

    12 0 obj
    ........
    endobj

    第一行第一个 12 规定为 positive integer, 表示对象 ID; 第二个 0 表示生成号(generation number),通常为0;第三个为固定 obj 表示,以最后一行 endobj 表示结束。中间 ...... 表示内容。其他地方引用该对象时,使用如下格式,其中 R 为关键字:

    12 0 R

    文件结构 

    PDF文档由PDF文件的主体部分中包含的对象组成。PDF文档中的大多数对象都是字典。文档的每个页面都由页面对象表示,页面对象是一个字典,其中包含对页面内容的引用。页面对象连接在一起并形成页面树,该页面树在文档目录中使用间接引用进行声明。

    在上图中,我们可以看到文档目录包含对页面树,大纲层次结构,文章线程,命名目的地和交互式表单的引用( page tree, outline hierarchy, article threads, named destinations and interactive form)。我们不会详细介绍每个部分的功能,但仅介绍最重要的部分,即“页面树”。 

    Document catalog 

    从上图可以看出,文档目录 是PDF文档中对象的根。我们已经说过,“PDF”尾部中的/ Root元素指定了文档目录。文档目录包含对其他定义文档内容的对象的引用。它还包含声明如何在屏幕上显示文档的信息。文档目录中的条目如下:

    • / Type:目录描述的PDF对象的类型(在我们的示例中,这是Catalog,因为这是文档目录对象)。
    • / Version:文档所依据的PDF规范的版本。
    • / Extensions:有关本文档中开发人员扩展的信息。
    • / Pages:对对象的间接引用,该对象是文档页面树的根。
    • /Dests:对对象的间接引用,该对象是指定的目标对象的根。
    • / Outlines:对大纲目录对象的间接引用,该对象是文档大纲层次结构的根。
    • / Threads:对表示文档文章线程的线程词典数组的间接引用。
    • / Metadata:对包含文档元数据的元数据流的间接引用。

    其他 Catalog字典中,常用的字段一般有以下一些:

    • 字段

      类型

      Type

      name

      (必须)必须为Catalog。

      Version

      name

      (可选)PDF文件所遵循的版本号(如果比文件头指定的版本号高的话)。如果这个字段缺省或者文件头指定的版本比这里的高,那就以文件头为准。一个PDF生成程序可以通过更新这个字段的值来修改PDF文件版本号。

      Pages

      dictionary

      (必须并且必须为间接对象)当前文档的页面集合入口。

      PageLabels

      number tree

      (可选) number tree,定义了页面和页面label对应关系。

      Names

      dictionary

      (可选)文档的name字典。

      Dests

      dictionary

      (可选;必须是间接对象)name和相应目标对应关系字典。

      ViewerPreferences

      dictionary

      (可选)阅读参数配置字典,定义了文档被打开时候的行为。如果缺省,则使用阅读器自己的配置。

      PageLayout

      name

      (可选) 指定文档被打开的时候页面的布局方式。SinglePageDisplay 单页OneColumnDisplay 单列TwoColumnLeftDisplay 双列,奇数页在左TwoColumnRightDisplay 双列,奇数页在右TwoPageLeft 双页,奇数页在左TwoPageRight 双页,奇数页在右缺省值: SinglePage.

      PageMode

      name

      (可选) 当文档被打开时,指定文档怎么显示UseNone 目录和缩略图都不显示UseOutlines 显示目录UseThumbs 显示缩略图FullScreen 全屏模式,没有菜单,任何其他窗口UseOC 显示Optional content group 面板UseAttachments显示附件面板缺省值: UseNone.

      Outlines

      dictionary

      (可选;必须为间接对象)文档的目录字典

      Threads

      array

      (可选;必须为间接对象)文章线索字典组成的数组。

      OpenAction

      array or dictionary

      (可选) 指定一个区域或一个action,在文档打开的时候显示(区域)或者执行(action)。如果缺省,则会用默认缩放率显示第一页的顶部。

      AA

      dictionary

      (可选)一个附加的动作字典,在全局范围内定义了响应各种事件的action。

      URI

      dictionary

      (可选)一个URI字典包含了文档级别的URI action信息。

      AcroForm

      dictionary

      (可选)文档的交互式form (AcroForm)字典。

      Metadata

      stream

      (可选;必须是间接对象)文档包含的元数据流。

    我们可以看到还有许多其他条目属于文档目录,但是这里不再对其进行描述。读者可以查看我们的资源以了解详细信息。下面显示了文档目录的示例:

    1 0 obj
    <</Type/Catalog/Pages 2 0 R >>
    endobj

    Page tree

    通过页面树可以访问文档的页面,该页面树定义了PDF文档中的所有页面。该树包含代表PDF文档页面的节点,该节点可以有两种类型:中间节点和叶节点。中间节点也称为页面树节点,而叶节点称为页面对象。 

    最简单的页面树结构可以由单个页面树节点组成,该节点直接引用所有页面对象(因此所有页面对象都是叶子)。

    页面树中的每个节点必须具有以下条目:

    • / Type:此对象描述的PDF对象的类型(在本例中为Pages ,因为我们正在谈论页面树节点)。
    • /Parent:应该在所有页面树节点中存在,但在根目录中除外,在根目录中不得存在该条目。此项指定其父项。
    • / Kids:应该出现在除叶子以外的所有页面树节点中,并指定可从当前节点直接访问的所有子元素。
    • / Count:指定在后续页面树中作为该节点后代的叶节点的数量。

    我们必须记住,页面树与PDF文档中的任何内容都不相关,例如页面或章节。

    2 0 obj
    <</Type/Pages/Count 1/Kids[ 4 0 R ]>>
    endobj

    4 0 obj
    <</Type/Page/Parent 2 0 R /MediaBox[ 0 0 595.3 841.9]/Resources 10 0 R /Contents 13 0 R >>
    endobj

    字段

    类型

    Type

    name

    (必须)必须是Page。

    Parent

    dictionary

    (必须;并且只能是间接对象)当前page节点的直接父节点page tree 。

    LastModified

    date

    (如果存在PieceInfo字段,就必须有,否则可选)记录当前页面被最后一次修改的日期和时间。

    Resources

    dictionary

    (必须; 可继承)记录了当前page用到的所有资源。如果当前页不用任何资源,则这是个空字典。忽略所有字段则表示继承父节点的资源。

    MediaBox

    rectangle

    (必须; 可继承)定义了要显示或打印页面的物理媒介的区域(default user space units)

    CropBox

    rectangle

    (可选; 可继承)定义了一个可视区域,当前页被显示或打印的时候,它的内容会被这个区域裁剪。默认值就是 MediaBox。

    BleedBox

    rectangle

    (可选) 定义了一个区域,当输出设备是个生产环境( production environment)的时候,页面显示的内容会被裁剪。默认值是 CropBox.

    Contents

    stream or array

    (可选) 描述页面内容的流。如果这个字段缺省,则页面上什么也不会显示。这个值可以是一个流,也可以是由几个流组成的一个数组。如果是数组,实际效果相当于所有的流是按顺序连在一起的一个流,这就允许PDF生成的时候可以随时插入图片或其他资源。流之间的分割只是词汇上的一个分割,并不是逻辑上或者组织形式的切割。

    Rotate

    integer

    (可选; 可继承) 顺时钟旋转的角度数,这个必须是90的整数倍,默认是0。

    Thumb

    stream

    (可选)定义当前页的缩略图。

    Annots

    array

    (可选) 和当前页面关联的注释。

    Metadata

    stream

    (可选) 当前页包含的元数据。

    在我们这个例子中,所有对象的引用关系如下图:

    上图内容解释: 

     

    0bj0 代表对象编号,后边的色块为对象包含的内容。

     

    再加一个例子:

    文档只有一页,内容如下:

    obj关系如下:

    继续分析:参考https://blog.csdn.net/pdfMaker/article/details/573990

    根据链接中描述以及上图内容,已经上边的两个例子,我们知道字体,图片等内容是在资源obj中,而文字对象是存在于contents obj中,查找了相关资料,发现文本内容的保存相对于图片等内容来说要复杂的多。

    引用wike中关于text的描述

    Text[edit]  //https://en.wikipedia.org/wiki/PDF

    Text in PDF is represented by text elements in page content streams. A text element specifies that characters should be drawn at certain positions. The characters are specified using the encoding of a selected font resource.

    文本在PDF中以页面内容字符串流中的“文本元素”呈现出来。一个文本元素指定字符应在指定位置描绘。字符用所选字体源的编码指定。 //https://zh.wikipedia.org/wiki/%E5%8F%AF%E7%A7%BB%E6%A4%8D%E6%96%87%E6%A1%A3%E6%A0%BC%E5%BC%8F

    官方文档:

    https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/pdf_reference_archives/PDFReference.pdf

    第五章是说文字相关的, 直接用书中的例子:

    Example 5.1 illustrates the most straightforward use of a font.  示例5.1演示了字体的最直接用法。
    It places the text ABC 10 inches from the bottom of the page and 4 inches from the left edge, using 12-point Helvetica. 它使用12点大小的Helvetica字体将文本ABC放置在距页面底部10英寸、距左边缘4英寸的位置。
    Example 5.1
    BT
    /F13 12 Tf 
    288 720 Td 
    (ABC) Tj
    El
    The five lines of this example perform the following steps:本例中的五行执行以下步骤:
    1. Begin a text object.1开始一个文本对象。
    2. Set the font and font size to use, installing them as parameters in the text state. (The font resource identified by the name F13 specifics the font externally known as Helvetica.)
       设置要使用的字体和字号,将其作为文本状态中的参数安装。(由名称F13标识的字体资源指定了外部称为Helvetica的字体。)
    3. Specify a starting position on the page, setting parameters in the text object.指定页面上的起始位置,在文本对象中设置参数。
    4. Paint the glyphs for a string of characters there.在该字形上绘制一串字符
    5. End the text object.结束文本对象。
    The following paragraphs explain these operations in more detail.以下段落将更详细地解释这些操作。

    由上边的例子我们知道,字符是放置在BT  和 ET 标签中间的。知道了这个,我们还不一定能看到相关文字,想看到相关文字还需要搞懂cMap这些标签,由于内容较多,请直接查看原文档。下边举一个例子来说明相关内容。

    在wps中写入:

    Hello 中文

    此内容作为正文内容,未设置字体以及格式等内容,然后生成pdf,效果如下图:

     

    下边我们首先捋一捋obj对象图:

     

    由上图可知,文字相关信息在obj19:

    而在这个图中,我们确实看到了直接介绍的BT  TJ等标签,而根据我们上边的说明,文字是保存的在TD TJ中间的,我们把这部分提取一下  

    BT
    /DeviceRGB cs 0 0 0 scn /DeviceRGB CS 0 0 0 SCN /FXF1 209 Tf 0 Tc 0 Tw 0.05 0 0 0.05 0 0 Tm 0 Tr /RelativeColorimetric ri 1 i

    /FXE1 gs 1800 14854.6 TD[(01)2.9342(02)-8.23325(03)-0.66507(03)-0.66507(04)]TJ
    /FXF2 209 Tf 0.05 0 0 0.05 0 0 Tm 2347.19 14854.6 TD[(01)0.971863(02)]TJ

    抛去我们看不懂的先不管,只挑熟悉的说:

     /FXE1 gs 1800 14854.6 TD[(01)2.9342(02)-8.23325(03)-0.66507(03)-0.66507(04)]TJ

    这里/fxe1 在上边的 obj图中可以找到

    由图可见,/fxe1 就是字体相关信息了,而TD是字符相关信息,根据PDF类型信息可知 

    字符串是放置在()中,但是我们这里()内的却是0x1,那真实的字符在那呢,答案是在obj6中,

    这里的beginbfchar 部分就是字符信息,0001对应的是48,48在ascii中就是H,正好与我们的内容对应,经过一一对比,我个括号内容连起来,确实是hello.

    那"中文"这两个字符在哪呢?答案是在obj11中

    4e2d就是中,6587是文。 

     

    展开全文
  • 你想在pdf文件删除一页,你想从pdf文件提取几页,你想识别pdf文档的文字,你还想修改pdf文件中一些内容,你想把pdf文件转换为word文件。你还想把图片批量转换为pdf文件。这些如何操作,要是有个人手把手教你就...
  • PDF文件中提取文本 文本提取支持,提供大小,位置和格式信息 PDF至CSV说明了从PDF提取表格数据。 提取具有坐标的图像 图片转PDF 将图像添加到页面 压缩和优化PDF 水印PDF档案 高级页面处理:将4页放在1页上 ...
  • 怎么批量修改pdf文件名?今天我将这个方法通过这篇文件分享给大家,希望大家都能学会,以便今后在工作使用,还可以用这个方法批量修改任何格式的文件哦。
  • 1、core-renderer.jar该jar包修改过中文不换行问题 public static String getConversionHtmlCode(String linkcss,String htmlCode,String title){ String css = ""; css +="<style>"; css +="table{"; ...
  • 使用数字签名验证文件是否被修改. 基本原理: 发送方: 1. 生成公钥和私钥并保存至文件public.key和private.key。 2. 根据要发送的文件内容生成签名并写入文件signature.dtx。 3. 将公钥文件、签名文件和要发送的...
  • 有时候在编辑PDF文档的时,我们一般需要给PDF文档的...接下来就一起来看看怎么使用PDF编辑器对PDF文件的日期格式进行修改吧。  1、打开安装好的PDF编辑器,点击“打开更多文件”选择需要修改日期格式的PDF文档。  ...
  • PDF文件在现在的工作和学习中都在使用,现在PDF文件的使用的频率挺高的,有时候我们不止要会使用PDF文件,还要会对PDF文件进行修改编辑,PDF的编辑方法有很多,今天就以水印为例子来为大家分享一下编辑方法,一起来...
  • 主要介绍了php实现往pdf中加数字签名操作,结合完整实例形式详细分析了php基于tcpdf插件实现数字签名操作的具体步骤与相关技巧,并附带crt加密文件、源码等供读者下载,需要的朋友可以参考下
  • PDF文件修改是需要使用到PDF编辑软件的,PDF文件不像Word跟TXT文件那样可以直接的编辑修改PDF文件需要借助软件,那么,PDF文件怎么修改,PDF如何去掉水印呢,想知道的小伙伴们可以看看下面的文章哦。 1.打开...
  • 使用PHP创建和修改PDF文档

    千次阅读 2017-11-08 15:56:00
    PDF全称Portable Document Format,译为可移植文档格式,是Adobe公司推出的便携文档格式。...今天我们来讨论如何使用PHP创建PDF文档,以及使用PHP修改PDF。 要想在PHP使用PDF文档,我们需要用到T...
  • PDF文件数字签名的破解

    千次阅读 2019-02-15 21:14:04
    我尝试把这份文档再打印成PDF,这下数字签名倒是没有了,可原文件的书签也没了。又在网上看到有人说用“提取页面”也可以达到同样效果,但是也无法连书签一起提取。 最后在网上找到一个解决方案: 1...
  • 最近接到个需求,根据所传关键字,定位关键字所在pdf文件中的坐标,然后盖章,其中所传参数还有关键字所在页数,和获取第几次出现的关键字,会传多个印章和关键字,每个印章对应一个关键字。自己先写了个简单demo,...
  • Python 批量修改PDF文件名

    千次阅读 2018-10-23 11:51:08
    参加CyberC会议,会议的论文集文件名全是字母+数字,找自己想看的很难受,就用python改了下。 环境说明: (1)python3.6 (2)PyPDF2库(直接pip安装就行) (3)文件的结构说明,如下图: 代码如下: ...
  • 提取pdf文件中文字的两种方法

    万次阅读 2017-04-11 14:10:41
    大家都知道pdf文件是不可直接编辑与修改的,使用起来有些不便。那么当我们需要提取其中的文字时该怎么办呢?下面小编教大家怎样提取PDF文件中的文字! ocr文字识别软件 方法一:一般来说,如果想要提取pdf文件中的...
  • 在Python,最出名的库便是Google所资助的tesseract。利用tesseract可以很轻松地对图像进行识别。现在问题来了,如果想对一个...
  • PDF文件格式:基本结构

    千次阅读 2019-12-28 22:42:30
    目录1.引言2.PDF文件结构3.增量更新4.例子5.PDF数据类型5.1.布尔值(Booleans)5.2.数字(Numbers)5.3.名称(Names)5.5.数组(Arrays)5.6....这些攻击利用PDF文件在解析或呈现过程的某种漏洞,在目标系统上执行...
  • 一个简单PDF文件的结构分析

    千次阅读 2020-08-08 11:53:45
    2. 文件(物理结构), 决定对象是如何存放在一个PDF文件中的, 它们是如何被访问的,如何被更新的。这个结构是独立于对象的语义的。 3. 文档结构, 说明一些基本的对象类型是如何来表现PDF文档的成分的:例如页,...
  • 根据任意页数平均拆分一个PDF文件2.批量删除文件名的任意字符3.将文件列表以阿拉伯数字重排序4.根据Excel两列数据批量修改文件名(oldname、newname)写在最后:上面的每一个方法都可以独立使用,按序使用则可以...
  • 使用itext5 验证PDF文件中的签名证书有效性-验签

    万次阅读 热门讨论 2018-07-01 01:55:27
    验证签名模块代码位置: testarea-itext5/src/test/java/mkl/testarea/itext5/signature/VerifySignature.java 一,实际需求: ... 用户上传带有签署证书的pdf文件,我们进行验证证书的真实性,有效性以...
  • 之前写的java 使用itext 导出...java 使用itext导出PDF文件,图片文字左右布局 解决办法:设置字体格式,兼容中文字符。 如下: //新增改进代码 ------------------------------- BaseFont bfChinese = BaseFont...
  • 主要问题是PDF中的每个字符串都以某种方式编码.这是因为PDF是在Unicode通常可用之前制作的,并且在PostScript有历史记录. PosctScript喜欢为字体提供非常灵活的编码方法,并鼓励重新编码.让我们退后一步,了解整体...
  • pdf文件拆分为单个pdfArticle Update 13-March-2020: I removed the full source code and the code snippets. The article that remains should act as a "design roadmap" for members who want to write the code...
  • PDF文件或图片或网页的公式,有自己写文章或者做PPT需要的,如果公式很复杂,或者你就是懒。若是用latex写文章,就想直接把公式变为可编辑的latex格式,是用word写文章或者做PPT,就想直接把公式变为可编辑的公式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,250
精华内容 16,100
关键字:

修改pdf文件中的数字