引流技术-通过文件中增加联系方式并传播

文章目录

    • 前言
    • 文档增加联系方式
    • 扩散
      • 网盘扩散
      • 自建网站
      • 借力
    • 注意

前言

很多人在找资料的时候可能都遇到过下图情况:
1、文档最后面留一个自己的联系方式;
2、找的一堆文件中都有相同的情况;
3、一段时间全网搜到的很多相同文件也有这个联系方式。

那么这个怎么做的?今天我们来亲自试验一下。

file

文档增加联系方式

我们看到的文档可能有PDF、word,首先我们来看看word当怎么处理,word一般会有两种后缀名:doc、docx,docx比较好处理,是基于XML的,而doc格式的文档是一个较老的、二进制格式的文件。所以我们需要把doc转换成docx文档后再批量添加图片。

还有一个问题就是我电脑是MAC,一般我们会用到win32com来处理doc文档转换,但是mac不支持,所以我们要用到另外一个工具LibreOffice
需要下载安装后配置环境变量。

下载官网:https://www.libreoffice.org/

安装后正常配置环境变量哦

下面我们来看看具体代码:

import os
import subprocess
from docx import Document
from docx.shared import Inches
from docx.enum.text import WD_ALIGN_PARAGRAPHdef convert_doc_to_docx(doc_path):"""使用LibreOffice将DOC文件转换为DOCX文件"""docx_path = doc_path + 'x'subprocess.run(["/Applications/LibreOffice.app/Contents/MacOS/soffice", "--headless", "--convert-to", "docx", doc_path, "--outdir", os.path.dirname(doc_path)])return docx_pathdef add_image_to_docx(docx_path, image_path):"""在DOCX文档末尾添加居中的图片"""doc = Document(docx_path)p = doc.add_paragraph()run = p.add_run()run.add_picture(image_path, width=Inches(2.0))  # 图片大小可以根据需要调整paragraph_format = p.paragraph_formatparagraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTERdoc.save(docx_path)def convert_docx_to_pdf(docx_path):"""使用LibreOffice将DOCX文件转换为PDF"""subprocess.run(["/Applications/LibreOffice.app/Contents/MacOS/soffice", "--headless", "--convert-to", "pdf", docx_path, "--outdir", os.path.dirname(docx_path)])def process_folder(folder_path, image_path):"""处理文件夹中的所有DOC和DOCX文件"""for filename in os.listdir(folder_path):file_path = os.path.join(folder_path, filename)if filename.endswith('.doc'):docx_path = convert_doc_to_docx(file_path)add_image_to_docx(docx_path, image_path)convert_docx_to_pdf(docx_path)os.remove(docx_path)  # 删除转换后的DOCX文件print(f"Processed {filename}")elif filename.endswith('.docx'):add_image_to_docx(file_path, image_path)convert_docx_to_pdf(file_path)print(f"Processed {filename}")# 调用函数
folder_path = 'path/to/your/documents'  # 替换为你的文档所在的目录
image_path = 'path/to/your/image.jpg'   # 替换为你要添加的图片的路径
process_folder(folder_path, image_path)

接下来我们看一下PDF怎么处理,PDF比较特殊的就是加密的文件了,这种文件没办法直接写,需要创建新文件把内容copy进去后在最后面增加图片。
具体代码如下:

import os
import fitz  # PyMuPDFdef add_image_to_pdf_centered(pdf_path, image_path):"""在PDF文档的最后添加一个新页面,并在其中居中插入一张图片"""# 打开原始PDFpdf_doc = fitz.open(pdf_path)# 获取PDF的尺寸以适配新页面if pdf_doc.page_count > 0:page = pdf_doc[0]page_width, page_height = page.rect.width, page.rect.heightelse:# 如果PDF为空,使用默认的A4尺寸page_width, page_height = fitz.paper_rect('a4').size# 添加新页面pdf_doc.new_page(width=page_width, height=page_height)# 计算图片的位置以使其居中img = fitz.open(image_path)img_width, img_height = img[0].rect.width, img[0].rect.heightscale = min(page_width / img_width, page_height / img_height)new_width, new_height = img_width * scale, img_height * scalex1 = (page_width - new_width) / 2y1 = (page_height - new_height) / 2rect = fitz.Rect(x1, y1, x1 + new_width, y1 + new_height)# 在新页面上插入居中的图像last_page = pdf_doc[-1]last_page.insert_image(rect, filename=image_path)# 保存修改后的PDF,重写整个文件new_pdf_path = pdf_path.replace('.pdf', '_new.pdf')  # 创建新文件以避免覆盖原文件pdf_doc.save(new_pdf_path)pdf_doc.close()# 调用函数
folder_path = 'path/to/your/documents'  # 替换为你的文档所在的目录
image_path = 'path/to/your/image.jpg'   # 替换为你要添加的图片的路径for filename in os.listdir(folder_path):if filename.endswith('.pdf'):pdf_path = os.path.join(folder_path, filename)add_image_to_pdf_centered(pdf_path, image_path)print(f"Image added to {filename}")

当然我们也可以把两个脚本合并,直接一把梭。

import os
import fitz  # PyMuPDF
import subprocess
from docx import Document
from docx.shared import Inches
from docx.enum.text import WD_ALIGN_PARAGRAPH# 处理PDF的函数
def add_image_to_pdf_centered(pdf_path, image_path):pdf_doc = fitz.open(pdf_path)if pdf_doc.page_count > 0:page = pdf_doc[0]page_width, page_height = page.rect.width, page.rect.heightelse:# 使用默认的A4尺寸page_width, page_height = fitz.paper_rect('a4').sizepdf_doc.new_page(width=page_width, height=page_height)img = fitz.open(image_path)img_width, img_height = img[0].rect.width, img[0].rect.heightscale = min(page_width / img_width, page_height / img_height)new_width, new_height = img_width * scale, img_height * scalex1 = (page_width - new_width) / 2y1 = (page_height - new_height) / 2last_page = pdf_doc[-1]last_page.insert_image(fitz.Rect(x1, y1, x1 + new_width, y1 + new_height), filename=image_path)new_pdf_path = pdf_path.replace('.pdf', '_new.pdf')pdf_doc.save(new_pdf_path)pdf_doc.close()# 处理Word的函数
def convert_doc_to_docx(doc_path):docx_path = doc_path + 'x'subprocess.run(["/Applications/LibreOffice.app/Contents/MacOS/soffice", "--headless", "--convert-to", "docx", doc_path, "--outdir", os.path.dirname(doc_path)])return docx_pathdef add_image_to_docx(docx_path, image_path):doc = Document(docx_path)p = doc.add_paragraph()run = p.add_run()run.add_picture(image_path, width=Inches(2.0))paragraph_format = p.paragraph_formatparagraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTERdoc.save(docx_path)def convert_docx_to_pdf(docx_path):subprocess.run(["/Applications/LibreOffice.app/Contents/MacOS/soffice", "--headless", "--convert-to", "pdf", docx_path, "--outdir", os.path.dirname(docx_path)])# 综合处理函数
def process_files(folder_path, image_path):for filename in os.listdir(folder_path):file_path = os.path.join(folder_path, filename)if filename.endswith('.pdf'):add_image_to_pdf_centered(file_path, image_path)print(f"Image added to {filename}")elif filename.endswith('.doc'):docx_path = convert_doc_to_docx(file_path)add_image_to_docx(docx_path, image_path)convert_docx_to_pdf(docx_path)os.remove(docx_path)  # 删除转换后的DOCX文件print(f"Processed {filename}")elif filename.endswith('.docx'):add_image_to_docx(file_path, image_path)convert_docx_to_pdf(file_path)print(f"Processed {filename}")# 设置文件夹和图片路径
folder_path = 'path/to/your/documents'  # 替换为你的文档所在的目录
image_path = 'path/to/your/image.jpg'   # 替换为你要添加的图片的路径# 调用处理函数
process_files(folder_path, image_path)

至此,我们就可以把我们的文档全部添加自己的联系方式。
file

扩散

有了文档,我们就可以进行扩散了,介绍几个我了解的方式:

网盘扩散

通过网盘,把自己文件放在网盘中,然后再通过文章等传播即可。

这种可能很多人要看电影的时候也会遇到,你搜到的电影文档内没有内容,只有一个联系方式,让你加联系方式进群后再把相关的视频发你,达到引流作用。

自建网站

可以自己建一个网站,把所有文档放在服务器,然后让大家去下载。

当然很多人说这样子的话我直接在网站首页留联系方式不是更直接,这个有其他可能,就是有些人在你网站下载了文件,给了他的朋友看,这是不是间接传播了。

借力

我们可以找一些类似于百度文库、还有其他的学习论坛有收集文档的情况,我们把自己的文档上传,借助这些平台的流量,扩大文档被检索的可能。

注意

很多文档可能有版权,这个要注意。

很多平台会检测文档中是否有联系方式等违规的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/666124.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

洞察未来趋势,引领技术革新——2023年全球软件开发大会(QCon上海站)全景解析

在全球科技飞速发展的浪潮中,软件开发行业始终扮演着创新引擎的角色。 作为业界瞩目的年度盛会,2023年全球软件开发大会(QCon上海站)不仅是一场技术交流的嘉年华,更是一次洞察行业趋势、探索未来发展方向的重要平台。…

【Linux】vim的简单使用

我们知道在Windows下的VS2019是一个集成开发环境,也就是说,集编辑,编译,调试等功能都放在了一起;但是在Linux下,这些步骤都是分开的,我们这篇博客就来说一说vim这个编辑器,它只有编辑…

vit细粒度图像分类(十)TransFG学习笔记

1.摘要 细粒度视觉分类(FGVC)是一项非常具有挑战性的任务,它旨在从子类别中识别对象,这是由于类间固有的微妙差异。现有的大部分工作主要是通过重用骨干网络提取检测到的判别区域的特征来解决这一问题。然而,这种策略不可避免地使管道变得复…

搭建k8s集群实战(四)k8s node 资源管理、避免系统无响应

Kubernetes 的节点可以按照 Capacity 调度。默认情况下 pod 能够使用节点全部可用容量。 这是个问题,因为节点自己通常运行了不少驱动 OS 和 Kubernetes 的系统守护进程。 除非为这些系统守护进程留出资源,否则它们将与 pod 争夺资源并导致节点资源短缺问题,从而导致系统无响…

回溯法:回溯法通用模版汇总以及模版应用

从一个问题开始 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 示例: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4] ] 很容易想到 用两个for循环就可以解决。 如果n为100,k为50呢,那就50层for循…

Java中动态修改注解的值

1. 描述 部分场景需要动态修改注解的值。例如,我们使用自定义注解控制接口流量,如果需要动态修改流量值,可以使用反射的方法实现。 2. 步骤 获取注解从注解中获取memberValues属性(map)使用put方法更新对象的值 3. 代码实现 该部分代码主…

MySQL事务原理的分析

1.事务 并发连接下考虑事务。 事务的本质是并发控制的单元,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。 事务控制语句 ACID特性 原子性:要么都做,要走么都不做。在事务执…

原型中之find()-查找满足条件的第一个元素,并返回该元素的值

array.find(callback(element[, index[, array]])[, thisArg]) callback:必需。要在数组中每个元素上执行的函数。 element:必需。当前正在处理的数组元素。 index:可选。正在处理的元素的索引。 array:可选。调用该方法的数组…

【Java程序设计】【C00247】基于Springboot的农机电招平台(有论文)

基于Springboot的农机电招平台(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的农机电招平台 本系统分为系统功能模块、管理员功能模块、农机机主功能模块以及使用者功能模块。 系统功能模块:农机电招…

电力升级改造,我发现了这种配电柜高效技巧!

在当今数字化和智能化的时代,电力作为企业和机构运转的生命线,其高效、可靠、安全的管理变得尤为重要。 因此,为了应对不断增长的电力需求和提升电力设备的运行水平,配电柜监控系统应运而生。 客户案例 制造业企业 济宁某企业面…

8868体育助力意甲尤文图斯俱乐部 帮助球队签订新合同

意甲的尤文图斯俱乐部是8868合作体育球队之一,根据意大利媒体的消息,尤文图斯已经决定和费德里科-基耶萨续约,这名球员已经开始思考他的将来了。 费德里科-基耶萨今年26岁,他和尤文图斯的合约到2025年6月30号就结束了。他知道很多…

Jmeter 基于Docker 实现分布式测试

基于Docker 实现分布式测试 制作Jmeter基础镜像制作工作节点镜像启动工作节点启动控制节点遇到的问题 使用Docker 部署Jmeter非常方便,可以省略软件的安装以及配置,比如jdk、jmeter。需要部署多个工作节点可以节省时间。 控制节点(Master-主节…

yo!这里是单例模式相关介绍

目录 前言 特殊类设计 只能在堆上创建对象的类 1.方法一(构造函数下手) 2.方法二(析构函数下手) 只能在栈上创建对象的类 单例模式 饿汉模式实现 懒汉模式实现 后记 前言 在面向找工作学习c的过程中,除了基本…

隐写术:隐藏信息的秘密艺术

一、引言 隐写术,这个充满神秘色彩的词汇,似乎让我们回到了间谍和秘密特工的时代。但实际上,隐写术在现代社会仍然有着广泛的应用,例如在军事、情报、商业等领域。本文将带你走进隐写术的世界,探索它的原理、应用和防…

大模型增量预训练新技巧:解决灾难性遗忘

大家好,目前不少开源模型在通用领域具有不错的效果,但由于缺乏领域数据,往往在一些垂直领域中表现不理想,这时就需要增量预训练和微调等方法来提高模型的领域能力。 但在领域数据增量预训练或微调时,很容易出现灾难性…

git 如何修改仓库地址

问题背景:组内更换大部门之后,代码仓的地址也迁移了,所以原来的git仓库地址失效了。 虽然重新建一个新的文件夹,再把每个项目都git clone一遍也可以。但是有点繁琐,而且有的项目本地还有已经开发一半的代码&#xff0c…

遗失的源代码之回归之路的探索与实践

背景 最近比较突然被安排接手一个项目,该项目的情况如下 原生和RN结合的混合开发模式组件化开发,有很多基础组件以及业务组件但是在梳理项目依赖时发现了个别组件源码不全的情况,于是写了个cli用于对比两个版本产物文件,生成差异结果以便于快速进行源码找回恢复。 结果如下…

【lesson9】高并发内存池Page Cache层释放内存的实现

文章目录 Page Cache层释放内存的流程Page Cache层释放内存的实现 Page Cache层释放内存的流程 如果central cache释放回一个span,则依次寻找span的前后page id的没有在使用的空闲span,看是否可以合并,如果合并继续向前寻找。这样就可以将切…

05、全文检索 -- Solr -- Solr 全文检索之图形界面的文档管理(文档的添加、删除,如何通过关键字等参数查询文档)

目录 Solr 全文检索之文档管理添加文档使用 JSON 添加文档:使用 XML 添加文档: 删除文档使用 JSON 删除文档:使用 XML 删除文档: 查询文档查询文档的详细参数fq(Filter Query):过滤sort:排序sta…

[Linux 进程(六)] 写时拷贝 - 进程终止

文章目录 1、写时拷贝2、进程终止2.1 进程退出场景2.1.1 退出码2.1.2 错误码错误码 vs 退出码2.1.3 代码异常终止引入 2.2 进程常见退出方法2.2.1 exit函数2.2.2 _exit函数 本片我们主要来讲进程控制,讲之前我们先把写时拷贝理清,然后再开始讲进程控制。…