Невозможно объединить водяной знак PDF в правильном положении

Я пишу PDF-редактор на Python с тремя функциями:

  1. Удалить последнюю страницу
  2. Удалить все пустые страницы
  3. Добавить водный знак

Я использовал стандартную подпрограмму 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

pdf

Я выполнил инструкцию, но результат все тот же, водяной знак не на всех страницах находится в одном и том же месте.

james 06.07.2024 02:21

Спасибо большое, этот обзор многое объяснил. Какую программу просмотра вы использовали, чтобы получить этот обзор? Я думаю, что python(pypdf2) определенно получает странный обзор вместо страницы в стандартной программе просмотра PDF. Я думаю, что странный обзор — это «поле обрезки», а «обычный» обзор, который мы видим в стандартной программе просмотра PDF-файлов, — это «медиа-поле». Поэтому проблема будет решена, если я просто удалю поле обрезки или заставлю pypdf2 использовать медиа-бокс?

james 06.07.2024 06:20
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
2
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема здесь в том, что 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-файл с открытым исходным кодом, который можно удалить без каких-либо усилий.

james 07.07.2024 03:00

Спасибо большое, программа работает. Для ясности: программа предназначена для группы секретных документов, которые невозможно найти в Интернете, и я обнаружил, что этот PDF-файл имеет ту же «проблему», что и секретный документ, поэтому я использовал этот документ в качестве заменяющего образца. .

james 07.07.2024 06:57

Другие вопросы по теме