Водяной знак двух PDF - каждая страница первого с каждой страницей второго - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть два файла PDF одинаковой длины, скажем, pdf1.pdf и pdf2.pdf. Я пытаюсь сделать водяные знаки на каждой странице pdf1.pdf с помощью pdf2.pdf (т. Е. На странице 1 файла pdf1.pdf на странице 1 файла pdf2.pdf, страницы 2 файла pdf1.pdf на странице 2 файла pdf2.pdf ...) ,

Однако я действительно борюсь с тем, как их зациклить (я новичок в программировании).

Например, я попробовал это:

import PyPDF2
from PyPDF2 import PdfFileMerger
from PyPDF2 import PdfFileReader, PdfFileWriter

output = PdfFileWriter()

ipdf = PdfFileReader(open('pdf1.pdf', 'rb'))
wpdf = PdfFileReader(open('pdf2.pdf', 'rb'))
for i in xrange(wpdf.getNumPages()):
    watermark = wpdf.getPage(i)
    for i in xrange(ipdf.getNumPages()):
        page = ipdf.getPage(i)

for i in watermark:
    page.mergePage(watermark)
    output.addPage(page)

with open('newfile.pdf', 'wb') as f:
   output.write(f)

Любая помощь будет оценена :):)

1 Ответ

0 голосов
/ 28 апреля 2018

Вы используете слишком много циклов, количество страниц одинаково, поэтому вы зацикливаетесь один раз над количеством страниц, получаете водяной знак, получаете страницу, комбинируете оба и добавляете их в вывод:

import PyPDF2
from PyPDF2 import PdfFileMerger
from PyPDF2 import PdfFileReader, PdfFileWriter

output = PdfFileWriter()

ipdf = PdfFileReader(open('pdf1.pdf', 'rb'))
wpdf = PdfFileReader(open('pdf2.pdf', 'rb'))

# same page counts - just loop once
for i in xrange(wpdf.getNumPages()):
    watermark = wpdf.getPage(i)    # get i-th watermark
    page = ipdf.getPage(i)         # get i-th page
    page.mergePage(watermark)      # marry them and add to output
    output.addPage(page)

with open('newfile.pdf', 'wb') as f:
   output.write(f)

Готово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...