2017-09-27 33 views
1

私は、 'Pythonで退屈なものを自動化する'という本を読んでいますが、すべてのページで.pdfをウォーターマークするコードを実行しようとしています。一ページ目。Python 3.5:forループを使ってPDFウォーターマークを適用する

したがって、問題はループ内または書き込み中にある必要があります。誰かが私がそれを把握するのを助けることができる?ありがとうございます

Windows 7マシンでPython 3.5.0を実行しています。

以下のコード:

import PyPDF2 
minutesFile = open('meetingminutes.pdf', 'rb') 
pdfReader = PyPDF2.PdfFileReader(minutesFile) 
minutesFirstPage = pdfReader.getPage(0) 
pdfWatermarkReader = PyPDF2.PdfFileReader(open('watermark.pdf', 'rb')) 
minutesFirstPage.mergePage(pdfWatermarkReader.getPage(0)) 
pdfWriter = PyPDF2.PdfFileWriter() 
pdfWriter.addPage(minutesFirstPage) 

for pageNum in range(1, pdfReader.numPages): 
     pageObj = pdfReader.getPage(pageNum) 
     pdfWriter.addPage(pageObj) 
resultPdfFile = open('watermarkedCover.pdf', 'wb') 
pdfWriter.write(resultPdfFile) 
minutesFile.close() 
resultPdfFile.close() 
+0

ループ内で透かしマージを移動する必要があります。 – juzraai

+0

ありがとうございましたjuzraai-私は実際にループ中に追加していると思いました。私は今あなたのコメントとcdlaneから、それはちょうどPDFを構築していて、透かしを追加していないことを理解しています。それは、コードを見るだけで私には分かりませんでした。ありがとう! –

答えて

1

「透かしのみ、最初のページに表示される」という事実はバグではありません、それはこのコードが実行するように設計されたまさにです。すべてのページにウォーターマークを追加するコードを変更しようとする試みはありません。たとえ "なし"であっても、あなたがそれを変更するためにどのような努力を払っているのか、状況について正直である。

は、ここですべてのページを透かしコードの私のリワークです:

import PyPDF2 

watermarkFile = open('watermark.pdf', 'rb') 
pdfWatermarkReader = PyPDF2.PdfFileReader(watermarkFile) 

minutesFile = open('meetingminutes.pdf', 'rb') 
pdfReader = PyPDF2.PdfFileReader(minutesFile) 

pdfWriter = PyPDF2.PdfFileWriter() 

for pageNum in range(pdfReader.numPages): 
    pageObj = pdfReader.getPage(pageNum) 
    pageObj.mergePage(pdfWatermarkReader.getPage(0)) 
    pdfWriter.addPage(pageObj) 

resultPdfFile = open('watermarkedCover.pdf', 'wb') 
pdfWriter.write(resultPdfFile) 

watermarkFile.close() 
minutesFile.close() 
resultPdfFile.close() 

はそれを試してみて、それが何をしたいんかどうかを確認します。

+0

こんにちはcdlane、私はこれを把握するための仕事に入れていないスーパースナックの含意とヘルプのためにもありがとう!ここでは、私はPythonに慣れていないし、学んでいる真実です。私が言ったように、このコードを本から直接取り出しました。 「私たちはminutesFirstPageでmergePage()を呼び出したので、minutesFirstPageは透かし入りの最初のページを表します。私たちはPdfFileWriterオブジェクトを作成し、透かし入りの最初のページ❻を追加します。 meetingminutes.pdfの残りのページをループして、PdfFileWriterオブジェクト " –

+0

@ Paulに追加してください。私は新しいユーザー名として 'SuperSnarky'を考えます。元のコードを読んで、それは明らかに最初のページに透かしを入れ、残りをそのままコピーしました。私もそれを実行することでこれを確認しました。あなたは答えが出る前に明瞭さが不十分なため、あまりにも多くの人が閉じているのを見て、あなたの質問に真っ直ぐ進むはずです。 – cdlane

関連する問題