• 大小: 3KB
    文件类型: .py
    金币: 2
    下载: 1 次
    发布日期: 2021-06-10
  • 语言: Python
  • 标签: PDF  Python  PyPDF2  

资源简介

针对的是网上下载的OpenCV 3.x with Python By Example 2nd Edition PDF文件,采用Python和PyPDF2编程,去除该PDF上的文字水印。去除水印的方法随着采用的加水印的方法不同而不同,所采用的方法对于去除一些指定的PDF有用,而对别的可能就是根本用不了。本例程仅供业余时间的时间有效耗散

资源截图

代码片段和文件信息

# -*- coding: utf-8 -*-

# 去除原PDF文件中的水印,可从简书下载
# OpenCV 3.x with Python By Example 2nd
# https://www.jianshu.com/p/a4d306dc3b5b

# Remove watermark with PyPDF2
# http://blog.uorz.me/2018/06/19/removeing-watermark-with-PyPDF2.html

# Goshin/Remove-PDF-Watermark
# https://github.com/Goshin/Remove-PDF-Watermark

from PyPDF2 import PdfFileMerger
from PyPDF2.pdf import ContentStream
from PyPDF2.utils import b_
from PyPDF2.generic import Nameobject Numberobject
import numpy as np

import argparse
import logging

class PdfFileModifyMerger(PdfFileMerger):

    # 书签向前差了一页,退回原位
    def bookmarks_plus_one(self bookmarks=None):
        if bookmarks == None:
            bookmarks = self.bookmarks

        for b in bookmarks:
            if isinstance(b list):
                self.bookmarks_plus_one(b)
                continue

            bp = b[‘/Page‘]

            if isinstance(bp Numberobject):
                #b[‘/Page‘] = Numberobject(bp.as_numeric() - 1)
                b.__setitem__(Nameobject(‘/Page‘) Numberobject(bp.as_numeric() - 1))
                continue

    def merge(self *args after_page_append=[] **kwargs):
        super(PdfFileModifyMerger self).merge(*args **kwargs)

        pdfr = self.inputs[-1][1]

        position = args[0]
        pages = kwargs.get(‘pages‘ None)
        if pages is None:
            pages = (0 pdfr.getNumPages())
        elif isinstance(pages PageRange):
            pages = pages.indices(pdfr.getNumPages())
        elif not isinstance(pages tuple):
            raise TypeError(‘“pages“ must be a tuple of (start stop[ step])‘)

       

评论

共有 条评论