当前位置: 首页 > news >正文

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

文章目录

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

前言

很多人在找资料的时候可能都遇到过下图情况:
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

扩散

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

网盘扩散

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

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

自建网站

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

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

借力

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

注意

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

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

相关文章:

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

文章目录 前言文档增加联系方式扩散网盘扩散自建网站借力 注意 前言 很多人在找资料的时候可能都遇到过下图情况: 1、文档最后面留一个自己的联系方式; 2、找的一堆文件中都有相同的情况; 3、一段时间全网搜到的很多相同文件也有这个联系方式…...

分布式搜索引擎_学习笔记_2

分布式搜索引擎_学习笔记_2 在昨天的学习中,我们已经导入了大量数据到elasticsearch中,实现了elasticsearch的数据存储功能。但elasticsearch最擅长的还是搜索和数据分析。 所以今天,我们研究下elasticsearch的数据搜索功能。我们会分别使用…...

【学习笔记】树上差分总结(点差分/边差分)

一.树上差分的基本概念 1.树上差分的定义 树上差分,顾名思义,意思就是在树上做差分。 至于什么是差分呢?如果不会的同学,可以先看看我的这篇博客:一维,二维差分の详解(简单易懂)_一维差分-CSDN博客 2.树…...

Vue.js设计与实现(霍春阳)

Vue.js设计与实现 (霍春阳) 电子版获取链接:Vue.js设计与实现(霍春阳) 编辑推荐 适读人群 :1.对Vue.js 2/3具有上手经验,且希望进一步理解Vue.js框架设计原理的开发人员; 2.没有使用过Vue.js,但对Vue.js框架设计感兴趣…...

go消息队列RabbitMQ - 订阅模式-fanout

1、发布订阅 订阅模式,消息被路由投递给多个队列,一个消息被多个消费者获取。 1) 可以有多个消费者 2) 每个消费者有自己的queue(队列) 3) 每个队列都要绑定到Exchange(交换机&…...

科普类——5G远程实时操控技术在国内港口应用简介(十三)

在中国,5G远程实时操控技术已经在多个港口得到应用,并且应用规模不断扩大,展现出良好的发展前景。以下是一些具体的应用案例: 上港集团洋山港:上港集团与华为合作,在全球港口首次将F5G技术应用于超远程控制…...

整理:汉诺塔简析

大体上,要解决一个汉诺塔问题,就需要解决两个更简单的汉诺塔问题 以盘子数量 3 的汉诺塔问题为例 要将 3 个盘子从 A 移动到 C,就要: 将两个盘子从 A 移动到 B(子问题 1) 为了解决子问题 1,就…...

Android 8.1 设置--声音中增加通话音量

Android 8.1 设置--声音中增加通话音量 近来收到项目需求&#xff0c;想要在设置--声音中增加一项通话音量调节&#xff0c;具体修改参照如下&#xff1a; /vendor/mediatek/proprietary/packages/apps/MtkSettings/res/values/strings.xml <!-- Sound: Title for the opt…...

C#中使用OpenCvSharp4绘制直线、矩形、圆、文本

C#中使用OpenCvSharp4绘制直线、矩形、圆、文本 继之前的Python中使用Opencv-python库绘制直线、矩形、圆、文本和VC中使用OpenCV绘制直线、矩形、圆和文字&#xff0c;将之前的Python和C示例代码翻译成C#语言&#xff0c;很简单&#xff0c;还是借用OpenCvSharp4库中的Line、…...

Qt程序设计-自定义控件(提升法)

本文讲解如何使用提升法自定义控件,控件有界面。 实现自定义一个开关控件,控件上显示当前的状态。实现过程如下: 1、在创建的项目上,添加qt设计界面类。 2、选择widget 3、更改名称为MySwitchButton 4、添加两个图标资源文件,用来显示开关状态 5、添加两个label,一个…...

计算机网络基础知识笔记

1 HOST和PORT Claude-2-100k: 我来用简单的语言解释一下HOST和PORT这两个网络术语&#xff1a; HOST就是设备的IP地址,比如"127.0.0.1"就是我们本机的IP地址&#xff1b; PORT就是端口号,可以把它简单理解为设备上的门牌号。 举个类比,我们要给某个人发信件,需要知道…...

【iOS ARKit】2D肢体动作捕捉

人体肢体动作捕捉在动漫影视制作、游戏CG 动画、实时模型驱动中有着广泛的应用&#xff0c;利用 ARKit&#xff0c;无须额外的硬件设备即可实现 2D和3D人体一系列关节和骨骼的动态捕捉&#xff0c;由于移动AR 的便携性及低成本&#xff0c;必将促进相关产业的发展。 ARBody Tr…...

MAC word删除空白页

问题&#xff1a;MAC word删除空白页 解决&#xff1a; option删除键...

字面跳动前端面试题:React Hook为什么不能放在if/循环/嵌套函数里面?

答&#xff1a;首先&#xff0c;React Hooks 是为了简化组件逻辑和提高代码可读性而设计的。将 Hook 放在 if/循环/嵌套函数中会破坏它们的封装性和可预测性&#xff0c;使得代码更难维护和理解。同时&#xff0c;这样做也增加了代码的复杂度&#xff0c;可能会导致性能下降和潜…...

【SpringBoot】SpringBoot的web开发

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;SpringBoot ⛺️稳重求进&#xff0c;晒太阳 Wbe开发 使用Springboot 1&#xff09;、创建SpringBoot应用&#xff0c;选中我们需要的模块&#xff1b; 2&#xff09;、SpringBoot已经默…...

houdini 入门指南-参考自用,内有翻译错误

HOUDINI 18.5列1 GETTING STARTED 入门指南 What’s new in Houdini 18.5 胡迪尼18.5有什么新内容 New features and changes in Houdini 18.5.胡迪尼18.5的新功能和变化。Basics基础The basics of working with Houdini’s user interface.使用胡迪尼用户界面的基本知识。Shel…...

【笔记】SPN和PLMN 运营商网络名称显示

一、业务术语 缩写 全称 释义 CDNR Carrier Display Name Ressource 运营商显示名称资源 PLMN Public Land Mobile Network 公共陆地移动网络。 表示最终显示的网络运营商名字 SPN Service Provider Name SIM卡EF文件6F46。表示服务提供商名字,主要是SIM卡服务 OPL Operator …...

Selenium处理Alert弹窗

页面弹窗有 3 种类型&#xff1a; alert&#xff08;警告信息&#xff09; confirm&#xff08;确认信息&#xff09; prompt&#xff08;提示输入&#xff09; 对于页面出现的 alert 弹窗&#xff0c;Selenium 提供如下方法&#xff1a; 序号 方法/属性 描述 1 ac…...

FCIS 2023:洞悉网络安全新前沿,引领未来安全创新狂潮

在数字化浪潮席卷全球的今天&#xff0c;网络安全问题愈发凸显其重要性。 FCIS 2023网络安全创新大会作为业界瞩目的盛会&#xff0c;不仅汇聚了国际顶尖的网络安全专家&#xff0c;更展示了最前沿的安全技术与研究成果。那么&#xff0c;参与这场大会&#xff0c;我们究竟能学…...

4个最佳的免费全磁盘加密程序,总有一款适合你

全磁盘加密软件加密整个驱动器,而不仅仅是几个文件或文件夹。加密计算机的驱动器可以使你的私人数据免受窥探,即使你的计算机被盗。 你也不仅仅局限于一个硬盘驱动器。闪存驱动器和外部硬盘驱动器等外部设备也可以通过磁盘加密软件进行加密。 注意:Windows和macOS都集成了…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...

篇章二 论坛系统——系统设计

目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...

flow_controllers

关键点&#xff1a; 流控制器类型&#xff1a; 同步&#xff08;Sync&#xff09;&#xff1a;发布操作会阻塞&#xff0c;直到数据被确认发送。异步&#xff08;Async&#xff09;&#xff1a;发布操作非阻塞&#xff0c;数据发送由后台线程处理。纯同步&#xff08;PureSync…...

相关类相关的可视化图像总结

目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系&#xff0c;可直观判断线性相关、非线性相关或无相关关系&#xff0c;点的分布密…...