Я пишу PDF-редактор на Python с тремя функциями:
Я использовал стандартную подпрограмму Water Mark, но водяной знак все равно добавлялся в неправильное место в тестовом PDF-файле. Что-то не так с кодом или PDF-файлом? Я думаю, это PDF
from PyPDF2 import PdfMerger, PdfReader, PdfWriter
pdf_file = "sample.pdf"
watermark = "watermark.pdf"
merged = "result.pdf"
with open(pdf_file, "rb") as input_file, open(watermark, "rb") as watermark_file:
input_pdf = PdfReader(input_file)
watermark_pdf = PdfReader(watermark_file)
watermark_page = watermark_pdf.pages[0]
output = PdfWriter()
for i in range(len(input_pdf.pages)):
pdf_page = input_pdf.pages[i]
pdf_page.merge_page(watermark_page)
output.add_page(pdf_page)
with open(merged, "wb") as merged_file:
output.write(merged_file)
Я сохранил его на replit.com, чтобы вы могли его запустить, PDF-файл тоже там. https://replit.com/@ygp3737/NavyNotedTypes#main.py
Спасибо большое, этот обзор многое объяснил. Какую программу просмотра вы использовали, чтобы получить этот обзор? Я думаю, что python(pypdf2) определенно получает странный обзор вместо страницы в стандартной программе просмотра PDF. Я думаю, что странный обзор — это «поле обрезки», а «обычный» обзор, который мы видим в стандартной программе просмотра PDF-файлов, — это «медиа-поле». Поэтому проблема будет решена, если я просто удалю поле обрезки или заставлю pypdf2 использовать медиа-бокс?
Проблема здесь в том, что Python уже использовался для повреждения очень хорошего источника печатной книги. Который сам по себе является сэмплером из общедоступной видеокниги в формате MP4.
Судя по комментариям, это «минимальный пример» другого «частного» макета, поскольку книги для публичной печати здесь опубликованы в общественном достоянии (WWW.littlefox.com), и поэтому нет необходимости пытаться поставить водяные знаки на часть, особенно поскольку это Adobe InDesign. 17.0 (Windows) Imposition, следовательно, уже поврежден предыдущей модификацией PyPDF2.
Здесь мы видим, что желаемый формат включает перевернутый двойной макет, поскольку страница 2 должна быть сложена или разрезана в типографии.
Я бы посоветовал вам получить исходный документ и использовать его для печати, а не худшую копию. Таким образом, при печати некоторые из 14 страниц будут «перевернутыми», и их будет легче вращать как страницы PDF, а не возиться, как это было с PyPDF. использовал. Лично я бы не стал добавлять водяные знаки в опубликованный документ, поскольку их легче удалить, чем эту более проблемную проблему, связанную с ротацией результатов печати.
https://res.littlefox.com/en/supplement/load_pdf/C0005234?_=242424
В оболочке вашей ОС вам понадобятся две строки кода.
Первый заключается в уменьшении страниц пополам, чтобы можно было получить эквивалентность
Mutool poster -x 1 -y 2 -o book-out.pdf book-in.pdf
Это очень хорошо работает для разделения 7 страниц на 14.
Вторая строка программы предназначена для поворота четных страниц, кроме 2, поэтому поверните 4, 6.... Теперь это самая сложная часть, поскольку у mutool
нет простого способа выборочного поворота. В результате получится всего 6 повернутых страниц, и тогда у нас возникнет еще больше проблем.
Таким образом, оба закодированных действия лучше всего выполнять по-другому.
Проще всего было бы заменить первую mutool
инструкцию на связную.
cpdf -chop-h 421 in.pdf -o out.pdf
Однако я не могу показать вам это, как и версия 2.7+, а у меня есть только последние 32 бита до версии 2.6!
вторая строка кода будет использоваться cpdf
для поворота выбранных страниц.
cpdf -decrypt-force -rotate 180 bat1.pdf 4,6,8,10,12,14 -o out.pdf
Теперь все страницы будут отображаться правильно.
cpdf также имеет функции создания водяных знаков, которые можно применять в сочетании с двумя вышеуказанными строками и теоретически всеми тремя шагами, объединенными с помощью AND
в коде.
Подробную информацию см. в главе 8 Watermarks and Stamps
руководства, где описаны многие параметры текста, изображения или импорта.
Это всего лишь практика, поскольку, как вы сказали, абсурдно добавлять водяной знак в PDF-файл с открытым исходным кодом, который можно удалить без каких-либо усилий.
Спасибо большое, программа работает. Для ясности: программа предназначена для группы секретных документов, которые невозможно найти в Интернете, и я обнаружил, что этот PDF-файл имеет ту же «проблему», что и секретный документ, поэтому я использовал этот документ в качестве заменяющего образца. .
Я выполнил инструкцию, но результат все тот же, водяной знак не на всех страницах находится в одном и том же месте.