一、word转dpf

在windows下,可以利用python库win32com或comtypes来实现。

import os

import comtypes.client

def get_path():

# 获取当前运行路径

path = os.getcwd()

# 获取所有文件名的列表

filename_list = os.listdir(path)

# 获取所有word文件名列表

wordname_list = [filename for filename in filename_list \

if filename.endswith((".doc", ".docx"))]

for wordname in wordname_list:

# 分离word文件名称和后缀,转化为pdf名称

pdfname = os.path.splitext(wordname)[0] + '.pdf'

# 如果当前word文件对应的pdf文件存在,则不转化

if pdfname in filename_list:

continue

# 拼接 路径和文件名

wordpath = os.path.join(path, wordname)

pdfpath = os.path.join(path, pdfname)

#生成器

yield wordpath,pdfpath

def convert_word_to_pdf():

word = comtypes.client.CreateObject("Word.Application")

word.Visible = 0

for wordpath,pdfpath in get_path():

newpdf = word.Documents.Open(wordpath)

newpdf.SaveAs(pdfpath, FileFormat=17)

newpdf.Close()

# ppt转化为pdf

# ppt = comtypes.client.CreateObject("Powerpoint.Application")

# ppt.Visible = 1

# newpdf = ppt.Presentations.Open(in_file)

# newpdf.SaveAs(out_file, FileFormat=32)

# newpdf.Close()

if __name__ == "__main__":

convert_word_to_pdf()

linux 下则无相应的库,通过librefoffice来实现:

libreoffice --invisible --convert-to pdf *.doc

二、加水印

给pdf加文字水印。

from PyPDF2 import PdfFileReader, PdfFileWriter

from reportlab.lib.units import cm

from reportlab.pdfgen import canvas

def create_watermark(content):

"""水印信息"""

# 默认大小为21cm*29.7cm

file_name = "mark.pdf"

c = canvas.Canvas(file_name, pagesize=(30*cm, 30*cm))

# 移动坐标原点(坐标系左下为(0,0))

c.translate(10*cm, 5*cm)

# 设置字体

c.setFont("Helvetica", 80)

# 指定描边的颜色

c.setStrokeColorRGB(0, 1, 0)

# 指定填充颜色

c.setFillColorRGB(0, 1, 0)

# 画一个矩形

# c.rect(cm, cm, 7*cm, 17*cm, fill=1)

# 旋转45度,坐标系被旋转

c.rotate(30)

# 指定填充颜色

c.setFillColorRGB(0, 0, 0, 0.1)

# 设置透明度,1为不透明

# c.setFillAlpha(0.1)

# 画几个文本,注意坐标系旋转的影响

c.drawString(3*cm, 0*cm, content)

c.setFillAlpha(0.6)

# 关闭并保存pdf文件

c.save()

return file_name

def add_watermark(pdf_file_in, pdf_file_mark, pdf_file_out):

"""把水印添加到pdf中"""

pdf_output = PdfFileWriter()

input_stream = open(pdf_file_in, 'rb')

pdf_input = PdfFileReader(input_stream, strict=False)

# 获取PDF文件的页数

pageNum = pdf_input.getNumPages()

# 读入水印pdf文件

pdf_watermark = PdfFileReader(open(pdf_file_mark, 'rb'), strict=False)

# 给每一页打水印

for i in range(pageNum):

page = pdf_input.getPage(i)

page.mergePage(pdf_watermark.getPage(0))

page.compressContentStreams() # 压缩内容

pdf_output.addPage(page)

pdf_output.write(open(pdf_file_out, 'wb'))

if __name__ == '__main__':

pdf_file_in = '3.pdf'

pdf_file_out = 'watermark.pdf'

pdf_file_mark = create_watermark('wangfei')

add_watermark(pdf_file_in, pdf_file_mark, pdf_file_out)

Linux打印添加水印,linux下word转pdf,加水印相关推荐

  1. Java实现Excel和word转pdf加水印,复制及可用

    Java实现Excel和word转pdf加水印,复制及可用 时隔大半年,之前朋友,今天突然找我说,他们有个需求要做这东西.想起来之前自己照着官方文档写,也走了不少坑.今天就索性写个,也为了方便以后使用 ...

  2. Linux打印添加水印,Linux 下给图片批量加水印

    一个非盈利组织的项目负责人突发奇想想给他们网站上的每张照片加上水印,说实话那些照片都是平时活动.party 的生活照片用不着用水印那么夸张,第一次听说给生活照加水印的.没办法,谁让我们和他们有合作项目 ...

  3. 给现有的word和pdf加水印

    iTextSharp简单生成pdf和操作pdf添加水印 给word加水印,利用的是aspose.words

  4. Java项目在Linux环境使用aspose把word转pdf乱码问题

    Java项目在Linux环境使用aspose把word转pdf乱码问题 一.问题 在项目中有word转pdf并展示的功能,在本地的windows环境下没有问题.但是放在Linux中部署运行,生成的pd ...

  5. java使用2种方法操作liberoffice把word转pdf,pdf加水印,java远程调用Linux执行命令

    文章目录 libreoffice下载地址 安装 (第一种) java调用 (第二种 推荐) java调用Linux命令转pdf java远程连接Linux执行命令(少数情况) linux安装windo ...

  6. Springboot使用itext及documents4j操作pdf(word转pdf、pdf加水印(文字或图片,可指定位置)、pdf加密(打开密码,编辑密码))

    pom.xml引入 <!-- pdf文档生成 --><dependency><groupId>com.documents4j</groupId>< ...

  7. (Java)word转pdf(aspose),pdf加水印(itextpdf),并支持POI模板(包括checkbox)导出

    目录 1.引入jar包 2.pdf处理工具类 3.poi模板导出工具类 4.测试类 5.模板 6.最终效果 1.引入jar包 2.pdf处理工具类 import com.aspose.cells.Pd ...

  8. python批量添加水印_python 给目录下的图片批量加水印

    python 给目录下的图片批量加水印 water.py 放到 图片文件夹里 然后cd 到当前文件夹 python water.py #coding=utf-8 import Image import ...

  9. 如何给word文档加水印

    转自:微点阅读  https://www.weidianyuedu.com/content/3519276155101.html 怎么给word文档添加水印?这是很多人心里面都有的疑问,给word文档 ...

  10. 为Word文档加水印使其更加美观(转)

    为Word文档加水印使其更加美观(转) 许多朋友在制作Word文档时,为使文档更加美观,喜欢在其中加上水印.而通常制作水印的方法是通过图形的层叠来实现的,但如果需要为文档中的每一页都加有相同水印的话, ...

最新文章

  1. org.json.JSONException: A JSONObject text must begin with #39;{#39; at character 1 of {解决方法...
  2. python 列表多行_Python Pandas list列表数据列拆分成多行的方法实现
  3. mysql常见的错误码
  4. 模拟撞击_模玩资讯:EPOCH 汽车撞击测试用模拟假人与实验车辆
  5. 支付宝小程序升级,一统阿里大生态!
  6. Windows平台下编译FFmpeg
  7. python实现自适应中值滤波器
  8. 制作数据分析报告的公开数据集资源
  9. 使用Unicode字符集出现的错误总结
  10. 将java或javaweb项目打包为jar包或war包
  11. 前门狗不理双人餐一份 - 北京团购网|京东团购
  12. Vue学习(学习打卡Day16)
  13. java 给一个开学日期,计算当天是开学第几周星期几或者开学第几周星期几为哪一天
  14. PHPMyWind5.4存储XSS(CVE-2017-12984)
  15. 黑马旅游网-旅游分类线路分页显示(七)
  16. 将腾讯qlv格式的视频转换为mp4格式
  17. 把泛型传给泛型方法。
  18. mysql占用服务器CPU100%的解决办法
  19. [Redux/Mobx] redux的数据存储和本地储存有什么区别?
  20. android 常用加密,分享一下Android各种类型的加密

热门文章

  1. perfmon 端口修改_Jmeter插件之PerfMon监控插件使用说明
  2. 《linux内核分析》第二次课 实验作业
  3. 百度网页不能连接服务器错误,win10系统登陆百度浏览器提示连接服务器错误的恢复步骤...
  4. Linux挂载新硬盘与格式化数据盘和查看磁盘格式
  5. 硬盘那些事(Windows系统下磁盘格式的优缺点)
  6. qlv转MP4,最新的方法
  7. vander范德蒙德行列式
  8. 2019 计蒜之道 初赛 第一场 A-商汤的AI伴游小精灵
  9. 【ESP】乐鑫系列物联网芯片
  10. Spring框架学习笔记05:SpringAop