Пример #1
0
def add_watermark(file_path, file_stage, fileno):
    """把水印添加到pdf中"""

    pdf_input = PdfFileReader(file_path)
    if pdf_input.isEncrypted:
        return
    pdf_info = pdf_input.getDocumentInfo()
    w, h = pdf_input.getPage(0).mediaBox[2:]
    # 页面尺寸转换为毫米
    page = (int(w) * 0.3528, int(h) * 0.3528)

    # 创建水印文件
    #mark = str(int(time.time()))+'.pdf'
    #mark = os.path.join('d:/', mark)

    mark = create_watermark(page, file_stage, fileno)

    # 读入水印pdf文件
    pageNum = pdf_input.getNumPages()
    pdf_output = PdfFileWriter()
    pdf_watermark = PdfFileReader(open(mark, 'rb'), strict=False)
    for i in range(pageNum):
        page = pdf_input.getPage(i)
        page.mergePage(pdf_watermark.getPage(0))
        pdf_output.addPage(page)

    #print('merg 结束...' + str(datetime.now()))

    # 加密码
    pdf_output.encrypt(user_pwd='', owner_pwd='12345', use_128bit=True)
    pdf_output.addMetadata(pdf_info)

    pdf_output.write(open(file_path, 'wb'))
Пример #2
0
def main():
    parser = argparse.ArgumentParser(
        prog='ca6fix',
        description=
        "Fix some disappointmented points in Computer Architecture Quantitative Approach 6th Edition Japanese translation PDF file.",
        usage='ca6fix -i ca6.pdf -o ca6_fixed.pdf',
        add_help=True)
    parser.add_argument('-i', '--input', help='input PDF file', required=True)
    parser.add_argument('-o',
                        '--output',
                        help='output PDF file',
                        required=True)
    args = parser.parse_args()

    reader = PdfFileReader(args.input)
    writer = PdfFileWriter()
    for p in range(reader.getNumPages()):
        page = reader.getPage(p)
        writer.addPage(page)

    writer.insertBlankPage(None, None, 4)

    for index in outline:
        add_outline(writer, index, 21)
    writer.setPageLayout('/TwoPageRight')
    writer.addMetadata({
        '/Title':
        'コンピュータアーキテクチャ 定量的アプローチ[第6版]',
        '/Author':
        'ジョン・L・ヘネシー, デイビッド・A・パターソン(著), 中條拓伯, 天野英晴, 鈴木 貢(訳)'
    })

    with open(args.output, 'wb') as fh:
        writer.write(fh)
Пример #3
0
def pdf_add_Stamp(path, file, stamp):
    with open(os.path.join(path, file), 'rb') as pdf:
        pdf_reader = PdfFileReader(pdf)
        with open(os.path.join(path, stamp), 'rb') as file_stamp:
            watermark = PdfFileReader(file_stamp)
            first_page = pdf_reader.getPage(0)
            first_page_watermark = watermark.getPage(0)

            first_page.mergePage(first_page_watermark)

            pdf_writer = PdfFileWriter()
            pdf_writer.addPage(first_page)
            pdf_writer.addMetadata({
                '/NumeroCadastre': 'LaTeteAToto',
                #     # '/Title': 'PDF in Python'
            })
            file_out = open(os.path.join(path, 'new_w_stamp.pdf'), 'wb')
            pdf_writer.write(file_out)
            #
            pdf.close()
            file_out.close()
            watermark.close()
Пример #4
0
def pdf_add_metadata(path, file, key, value, out_file, out_path=''):
    if out_path == '':
        out_path = path
    with open(os.path.join(path, file), 'rb') as pdf:
        try:
            pdf_reader = PdfFileReader(pdf)
            metadata = pdf_reader.getDocumentInfo()
            print(metadata)
            pdf_writer = PdfFileWriter()
            pdf_writer.appendPagesFromReader(pdf_reader)
            pdf_writer.addMetadata({
                '/' + key: value,
                #     # '/Title': 'PDF in Python'
            })
            file_out = open(os.path.join(out_path, out_file), 'wb')
            pdf_writer.write(file_out)
            #
            pdf.close()
            file_out.close()
            # print('File ' + os.path.basename(file) + ' has ' + str(pg) + ' page(s)')
        except ValueError:
            print(ValueError, 'rrrt')
Пример #5
0
    def add_watermark(file_stream, mark, out, info):
        """把水印添加到pdf中"""
        pdf_output = PdfFileWriter()
        #input_stream = open(pdf_file_in, 'rb')
        pdf_input = PdfFileReader(file_stream, strict=False)
        pdf_info = pdf_input.getDocumentInfo()
        # 获取PDF文件的页数
        pageNum = pdf_input.getNumPages()

        # 读入水印pdf文件
        pdf_watermark = PdfFileReader(open(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.encrypt(user_pwd='', owner_pwd='12345',use_128bit=True)
        pdf_output.addMetadata(pdf_info)
        # 可以更改一些属性值
        pdf_output.addMetadata({'/Comment': '新的属性', '/Title': '新的标题'})
        pdf_output.write(open(out, 'wb'))
Пример #6
0
# -*- coding:utf-8 -*-
# Author:Liu Hongliang

from PyPDF4 import PdfFileReader, PdfFileWriter

source_file = open("f:\\c1.pdf", "rb")
fin = PdfFileReader(source_file)
info = dict(fin.getDocumentInfo())
info['/ModDate'] = info['/CreationDate']
print(info)
dest_file = open("f:\\c2.pdf", "wb")
fout = PdfFileWriter()
fout.addMetadata(info)
fout.appendPagesFromReader(fin)
fout.write(dest_file)
source_file.close()
dest_file.close()
Пример #7
0
        embeddedFilesDictionary.update(
            {NameObject("/EmbeddedFiles"): embeddedFilesNamesDictionary})
        myPdfFileWriterObj._root_object.update(
            {NameObject("/Names"): embeddedFilesDictionary})
    else:
        myPdfFileWriterObj._root_object["/Names"]["/EmbeddedFiles"][
            "/Names"].append(createStringObject(fname))
        myPdfFileWriterObj._root_object["/Names"]["/EmbeddedFiles"][
            "/Names"].append(filespec)


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('config', help='Path to config file.')
    args = parser.parse_args()
    with open(args.config) as f:
        config = json.load(f)
    fr = PdfFileReader(config['dstFileName'], 'rb')
    fw = PdfFileWriter()
    fw.appendPagesFromReader(fr)
    for key in config['pdfInfo']:
        fw.addMetadata({key: config['pdfInfo'][key]})

    for oneAttachment in config['pdfAttachments']:
        with open(oneAttachment['srcFileName'], 'rb') as oneAttachmentFile:
            attachmentData = oneAttachmentFile.read()
            appendAttachment(fw, oneAttachment['attFileName'], attachmentData)

    with open(config['dstFileName'] + '.finalized.pdf', 'wb') as file:
        fw.write(file)