很多人在找资料的时候可能都遇到过下图情况:
1、文档最后面留一个自己的联系方式;
2、找的一堆文件中都有相同的情况;
3、一段时间全网搜到的很多相同文件也有这个联系方式。
那么这个怎么做的?今天我们来亲自试验一下。
我们看到的文档可能有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_PARAGRAPH
def 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_path
def 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_format
paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
doc.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 # PyMuPDF
def add_image_to_pdf_centered(pdf_path, image_path):
"""在PDF文档的最后添加一个新页面,并在其中居中插入一张图片"""
# 打开原始PDF
pdf_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.height
else:
# 如果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.height
scale = min(page_width / img_width, page_height / img_height)
new_width, new_height = img_width * scale, img_height * scale
x1 = (page_width - new_width) / 2
y1 = (page_height - new_height) / 2
rect = 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.height
else:
# 使用默认的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.height
scale = min(page_width / img_width, page_height / img_height)
new_width, new_height = img_width * scale, img_height * scale
x1 = (page_width - new_width) / 2
y1 = (page_height - new_height) / 2
last_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_path
def 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_format
paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
doc.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)
有了文档,我们就可以进行扩散了,介绍几个我了解的方式:
通过网盘,把自己文件放在网盘中,然后再通过文章等传播即可。
这种可能很多人要看电影的时候也会遇到,你搜到的电影文档内没有内容,只有一个联系方式,让你加联系方式进群后再把相关的视频发你,达到引流作用。
可以自己建一个网站,把所有文档放在服务器,然后让大家去下载。
当然很多人说这样子的话我直接在网站首页留联系方式不是更直接,这个有其他可能,就是有些人在你网站下载了文件,给了他的朋友看,这是不是间接传播了。
我们可以找一些类似于百度文库、还有其他的学习论坛有收集文档的情况,我们把自己的文档上传,借助这些平台的流量,扩大文档被检索的可能。
很多文档可能有版权,这个要注意。
很多平台会检测文档中是否有联系方式等违规的内容。