python 在pdf文件中搜索

2023-12-21

这是pdf结构的一部分:

5 0 obj
<< /Length 56 >>
stream
BT /F1 12 Tf 100 700 Td 15 TL (JavaScript example) Tj ET
endstream
endobj
6 0 obj
<<
/Type /Font
/Subtype /Type1
/Name /F1
/BaseFont /Helvetica
/Encoding /MacRomanEncoding
>>
endobj
7 0 obj
<<
/Type /Action
/S /JavaScript

我想搜索“javascript”是否存在。问题在于,javascript 可以用其十六进制表示为整体或部分“javascript 或 Jav#61Script 或 J#61v#61Script 等等”

那么我怎样才能知道 javascript 是否存在并且具有所有这些可能性???


一次读取一个字符,然后将找到的任何十六进制翻译为字符,同时也翻译为小写。将结果与“javascript”进行比较。

这是一个想法:

import string
import os
import re

def pdf_find_str(pdfname, str):
  f = open(pdfname, "rb")

  # read the file CHUNK_SIZE chars at a time, keeping last KEEP_SIZE chars
  CHUNK_SIZE = 2*1024*1024
  KEEP_SIZE = 3 * len(str) # each char might be in #ff form
  hexvals = "0123456789abcdef"

  ichunk = removed = 0
  chunk = f.read(CHUNK_SIZE)
  while len(chunk) > 0:

    # Loop to find all #'s and replace them with the character they represent.
    hpos = chunk.find('#')
    while hpos != -1:
      if len(chunk)-hpos >= 3 and chunk[hpos+1] in hexvals and chunk[hpos+2] in hexvals:
        hex = int(chunk[hpos+1:hpos+3], 16)  # next two characters are int value
        ch = chr(hex).lower()
        if ch in str: # avoid doing this if ch is not in str
          chunk = chunk[:hpos] + ch + chunk[hpos+3:]
          removed += 2
      hpos = chunk.find('#', hpos+1)

    m = re.search(str, chunk, re.I)
    if m:
      return ichunk * (CHUNK_SIZE-KEEP_SIZE) + m.start()

    # Transfer last KEEP_SIZE characters to beginning for next round of
    # testing since our string may span chunks.
    next_chunk = f.read(CHUNK_SIZE - KEEP_SIZE)
    if len(next_chunk) == 0: break
    chunk = chunk[-KEEP_SIZE:] + next_chunk

    ichunk += 1

  f.close()
  return -1

# On one file:
#if pdf_find_str("Consciousness Explained.pdf", "javascript") != -1:
#  print 'Contains "javascript"'

# Recursively on a directory:
for root, dirs, files in os.walk("Books"):
  for file in files:
    if file.endswith(".pdf"):
      position = pdf_find_str(root + "/" + file, "javascript")
      if position != -1:
        print file, "(", position, ")"
# Note: position returned by pdf_find_str does not account for removed
# characters from #ff representations (if any).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 在pdf文件中搜索 的相关文章

  • 如何使用python登录页面,该页面需要服务器在第一次请求时响应会话ID?

    我正在编写一个脚本来登录某个网页 我使用 request 和 request session 模块来实现此目的 在使用登录参数的第一个请求时 服务器响应一个会话 ID 如何设置该会话 ID 以进一步登录到同一页面 url some url
  • 如何使用playsound模块停止音频?

    如何在Python代码中通过playaudio模块停止音频播放 我播放过音乐 但我无法停止音乐 我怎样才能阻止它 playsound playsound name of file 您可以使用多处理模块将声音作为后台进程播放 然后随时终止它
  • 在 Django 中使用 prefetch_lated 连接 ManyToMany 字段

    我可能遗漏了一些明显的东西 但我在连接 ManyToMany 字段以在 Django 应用程序中工作时遇到问题 我有两个模型 class Area models Model name CharField class Role models
  • 如何在python 2.7.8中将非英文字母的字典写入文件?

    这是一个简单的例子 test location 北京 country 中国 the values are Chinese 在文件 test log 中 location 北京 country 中国 在python 2 7 8中 当我需要输出
  • 将文件标记为从 Python 中删除?

    在我的一个脚本中 我需要删除当时可能正在使用的文件 我知道我无法删除正在使用的文件 直到它不再使用为止 但我也知道我可以将该文件标记为由操作系统 Windows XP 删除 我将如何在 Python 中做到这一点 以及另一个不依赖于 pyw
  • 为什么我会得到“ufunc 'multiply' did not contains a loop with Signature Matching types dtype('S32') dtype('S32') dtype('S32')”,其值来自 raw_

    我正在尝试创建一个非常简单的程序 它将绘制一个抛物线 其中v是速度 a是加速度和x是时间 用户将输入值v and a then v and a and x将决定y 我试图用这个来做到这一点 x np linspace 0 9 10 a ra
  • 使用pip安装pylibmc时出错

    您好 当我尝试使用 pip 在 OSX Lion 上安装 pylibmc 时 出现以下错误 pylibmcmodule h 42 10 fatal error libmemcached memcached h file not found
  • 使用 NumPy 的 Mittag-Leffler 函数的不稳定性

    在尝试重现时Wolfram MathWorld 上的情节 http mathworld wolfram com Mittag LefflerFunction html 并试图帮助这个问题 https stackoverflow com qu
  • Pygooglevoice登录错误

    另一个人问了这个问题 但没有回复 所以我再问一遍 我正在尝试使用 pygooglevoice API 但是当我运行 SMS py 示例脚本时 它给了我一个登录错误 我已经安装了 Enthought python 我想也许我还需要安装其他东西
  • 完全定制的Python帮助用法

    我正在尝试使用 Python 创建完全自定义的 帮助 用法 我计划将其导入到许多我想要具有风格一致性的程序中 但遇到了一些麻烦 我不知道为什么我的描述忽略换行符 尝试过 和 我无法让 出现在 ARGS 行的 换行符之后 显然它们坐在自己的行
  • 为什么最简单的 requests_mock 示例在 pytest 中失败?

    我有一个特殊的问题requests mock 我想用它pytest测试我的 API 包装器库 我尝试过使用requests mock 文档中的第一个示例 http requests mock readthedocs io en latest
  • 如何从 Python 3.5 降级到 3.4

    我想安装 kivy 链接在这里 https kivy org docs installation installation windows html install win dist 用于项目 但是 当尝试使用 pip 安装它所依赖的包时
  • 模拟类:Mock() 还是 patch()?

    我在用mock http www voidspace org uk python mock index html使用Python 想知道这两种方法中哪一种更好 阅读 更Pythonic 方法一 只需创建一个模拟对象并使用它 代码如下 def
  • 枚举上的 random.choice

    我想用random choice on an Enum I tried class Foo Enum a 0 b 1 c 2 bar random choice Foo 但是这段代码失败了KeyError 我怎样才能随机选择一个成员Enum
  • 返回吃异常

    我至少发现了以下行为weird def errors try ErrorErrorError finally return 10 print errors prints 10 It should raise NameError name E
  • 如何从 IDLE 命令行运行 Python 脚本?

    在 bash shell 中 我可以使用 bash 或 source 手动调用脚本 我可以在 Python IDLE 的交互式 shell 中做类似的事情吗 我知道我可以转到文件 gt gt 打开模块 然后在单独的窗口中运行它 但这很麻烦
  • 在 Python 中伪造一个对象是否是类的实例

    假设我有一堂课FakePerson它模仿基类的所有属性和功能RealPerson 不扩展它 在Python 3中 是否可以伪造isinstance 为了认识到FakePerson as a RealPerson只通过修改对象FakePers
  • 混合两个列表的Pythonic方法[重复]

    这个问题在这里已经有答案了 我有两个长度为 n 和 n 1 的列表 a 1 a 2 a n b 1 b 2 b n 1 我想要一个函数作为结果给出一个列表 其中包含两个中的替代元素 即 b 1 a 1 b n a n b n 1 以下方法有
  • 将 .parquet 编码为 io.Bytes

    目标 将 Parquet 文件上传到 MinIO 这需要将文件转换为字节 我已经能够做到这一点了 csv json and txt bytes data to csv encode utf 8 bytes json dumps self d
  • 真实值与预测值的降维可视化

    我有一个数据框 如下所示 label predicted F1 F2 F3 F40 major minor 2 1 4 major major 1 0 10 minor patch 4 3 23 major patch 2 1 11 min

随机推荐

  • 捕获滚动​​溢出:隐藏元素

    假设您有一个隐藏了溢出的元素 是否可以在不滚动的情况下捕获该元素上的鼠标滚动 我问这个的原因是 我有一个单页设计的网站 我编写了一个脚本 当您向下或向上滚动时 该脚本会自动滚动到下一个位置 但有一些我不想要的东西 当他们尝试滚动时 页面实际
  • 共同的初始序列和比对

    在思考反例时这个问题 https stackoverflow com q 21499120 420683 我想出了 struct A alignas 2 char byte 但如果这是合法和标准布局 它的布局是否与此兼容struct B s
  • Linux 中 C++ 的低级磁盘操作

    linux中有哪些方法可以用C 进行低级磁盘操作 我正在尝试在磁盘上编写自己的数据管理器 例如 我想在Linux环境中创建一个C 程序 在磁盘上分配一定数量 连续 的数据 然后自由地允许我读 写该数据块 我认为我不想使用该标准fstream
  • 将独立的 aspx/asmx 页面添加到 DotNetNuke 中

    你好 我刚刚在我的服务器上安装了 dotnetnuke 5 06 比如说 路径是 mydomain com dnn 我有一个独立于 dotnetnuke 的库 我必须运行它 它包含 Web 服务和各种其他 httphandlers 所以我还
  • Excel Range 奇怪行为的 SpecialCells 方法

    我编写了一个宏 使用 Excel 范围对象的 SpecialCells 方法从某个范围中查找空白单元格 当我尝试执行以下代码时 出现 未找到单元格 的异常 Sub test Debug Print Sheet1 Range A1 D4 Sp
  • 无法找到组合@Published - Xcode11 Beta 5(11M382q)

    我正在尝试使用以下内容运行一个简单的项目 Published var currentPlacemark CLPlacemark nil XCode 11 Beta 5 11M382q iOS13 17A5556d 出现以下错误 dyld S
  • azure辅助角色中的异步/等待导致角色回收

    我正在我的 WorkerRole RoleEntryPoint 中使用任务 异步和等待 我有一些无法解释的回收 现在我发现 如果等待调用中的某些内容运行时间过长 则角色会回收 要重现它 只需在 Run 方法中执行 await Task De
  • Jquery UI 可调整大小 - 调整放置在 iframe 上的 div 的大小

    如果你查看这个 jsbin http jsbin com efosed 5 edit http jsbin com efosed 5 edit然后你按 Run with JS 就会出现一个可以用 jquery ui 调整大小的 div 一切
  • Azure Functions 部署时无法运行

    我是新来的 如果帖子不完整 抱歉 我正在尝试在 azure 上部署一个与 blob 交互的 python 脚本 该脚本在本地运行良好 我可以与我的存储帐户交互 上传和下载 blob 但是当我在 azure 上部署我的函数时 它不会运行 日志
  • bash 使用序列号批量重命名文件夹和子文件夹中的文件

    我需要一个 bash 脚本来执行以下操作 对于文件夹及其子文件夹中存在的特定类型的每个文件 它都会在前面添加一个序列号 4 位数字 后跟一个分隔符 例如我有 Queen 1986 A Kind of Magic 01 One vision
  • 流程图 - 动态更改 y 轴

    我是飞行新手 但很快就设置了我的时间图 这是我基于时间的情节 plot placeholder d xaxis mode time minTickSize 1 month min new Date 2008 05 20 getTime ma
  • 为什么我需要将“get”包装在 J“lapply”调用中的虚拟函数中?

    我希望通过类或常见模式匹配等标准来处理列grep 我的第一次尝试没有成功 require data table test table lt data table a 1 10 ab 1 10 b 101 110 this does not
  • 在 Netbeans 内运行时停止 Tomcat

    我使用 NetBeans 运行 Apache Tomcat 6 当我的代码出现故障 例如 NullPointerException 时 tomcat 会失败并且不会运行任何其他请求 我的问题是我无法让 tomcat 停止 我必须重新启动整个
  • 查找 Java 应用程序中的连接泄漏

    我有一个应用程序在一段时间后开始出现内部服务器错误 我询问的一些人告诉我 这可能是因为我的应用程序中的连接泄漏 我开始搜索并发现这个查询来模拟连接泄漏 select LAST CALL ET SQL TEXT username machin
  • 堆积条形图未正确更新 d3js

    In this https plnkr co edit X7JYRLCKgBnasP86FRgQ p preview堆积条形图我添加了一个平分线和一个自定义x invert函数 以便您可以读取每个月的值 问题是 当我添加此自定义函数时 团队
  • OpenXML SDK 2.0 与 Aspose 在 .NET 中生成服务器端 Word 2007 文档

    我将在 Net 中启动一个服务器端办公自动化项目 以下是计划的主要活动 创建一个word文档 使用现有的包含封面 页眉 页脚 目录的 Word 文档模板 保存存档 嵌入文件并调整大小 HTML 图像 Word Excel TOC 生成和格式
  • 我无法从数据库 PostgreSQL 生成 Hibernate 映射文件和 POJO?

    已经在数据库 PostgreSQL 中创建了表和关系 但是当我想生成 Hibernate 映射文件和 POJO 时 它们没有生成 我应用了所有适当的步骤hibernate cfg xml一代和hibernate reveng xml 我认为
  • 如何在没有数据库的情况下配置 Ruby on Rails?

    对于当前不需要数据库的小型网站项目来说 使用 Ruby on Rails 会很方便 我知道我可以在 MySQL 中创建一个空数据库并从那里开始 但是有人知道在没有数据库的情况下运行 Rails 的更好方法吗 Thanks For Rails
  • 对于矩阵向量乘法,行优先排序是否更有效?

    If M是一个 n x m 矩阵并且v and u是向量 那么就索引而言 矩阵向量乘法看起来像u i sum M i j v j 1 lt j lt m Since v是一个向量 对于面向数值计算的语言 其元素可能存储在连续的内存位置中 如
  • python 在pdf文件中搜索

    这是pdf结构的一部分 5 0 obj lt lt Length 56 gt gt stream BT F1 12 Tf 100 700 Td 15 TL JavaScript example Tj ET endstream endobj