Вопрос или проблема
Это не обязательно должен быть текст. Достаточно просто прямоугольника. Мне нужно что-то вроде этого:
insert_hyperlink -file my_pdf -page 3 -href "superuser.com" -rect 100x100+600+0
Я видел посты о вставке текста или водяных знаков, но ничего о гиперссылках. Меня также перенаправили на инструменты, такие как pdftk, но я не могу найти способ сделать это. Другие сайты решают эту проблему с помощью Adobe и онлайн-инструментов, но мне нужно что-то бесплатное, что работает в оболочке Linux.
Недавно я нашел эту библиотеку python, которая могла бы помочь: PyPDF2.
Вот раздел в документации о добавлении аннотаций с ссылками.
Ответ или решение
Для вставки гиперссылки в PDF-файл в Linux через командную строку можно воспользоваться библиотекой Python, такой как PyPDF2. Ниже представлен детализированный пошаговый процесс, который поможет вам достичь этой задачи.
Шаг 1: Установка необходимых компонентов
Прежде всего, вам нужно установить Python и библиотеку PyPDF2. В современном дистрибутиве Linux Python уже может быть установлен, если нет — используйте следующую команду для установки:
sudo apt-get install python3 python3-pip
Затем установите библиотеку PyPDF2:
pip3 install PyPDF2
Шаг 2: Написание скрипта на Python
Создайте новый файл, например insert_hyperlink.py
, и откройте его в текстовом редакторе. Добавьте следующий код, который использует PyPDF2 для вставки гиперссылки:
import PyPDF2
def insert_hyperlink(pdf_file, page_number, url, rect):
# Открываем существующий PDF файл
with open(pdf_file, "rb") as file:
reader = PyPDF2.PdfReader(file)
writer = PyPDF2.PdfWriter()
# Копируем все страницы в writer
for i in range(len(reader.pages)):
page = reader.pages[i]
if i == page_number:
# Создаем аннотацию ссылки
link = {
"/Type": "/Annot",
"/Subtype": "/Link",
"/Rect": rect,
"/A": {
"/S": "/URI",
"/URI": url,
},
}
page.add_annotation(link)
writer.add_page(page)
# Сохраняем новый PDF
with open("output.pdf", "wb") as output_file:
writer.write(output_file)
if __name__ == "__main__":
pdf_file = "my_pdf.pdf"
page_number = 2 # Страницы начинаются с 0
url = "https://superuser.com"
rect = [100, 500, 200, 550] # Координаты x1, y1, x2, y2
insert_hyperlink(pdf_file, page_number, url, rect)
Шаг 3: Запуск скрипта
Теперь вы готовы к запуску вашего скрипта. В командной строке выполните:
python3 insert_hyperlink.py
После успешного выполнения команды в текущей директории появится новый файл output.pdf
, в который будет добавлена гиперссылка.
Параметры функции
pdf_file
: имя исходного PDF-файла.page_number
: номер страницы (начиная с 0), на которой вы хотите вставить ссылку.url
: адрес гиперссылки.rect
: список с координатами прямоугольника [x1, y1, x2, y2], который будет определять область клика по ссылке.
Заключение
Используя предложенный выше метод, вы можете легко добавлять гиперссылки в PDF-файлы в среде Linux. Этот подход обеспечит вам необходимую гибкость и удобство работы, а использование Python добавляет потенциал для дальнейших автоматизаций и улучшений. Не забудьте проверить документацию PyPDF2 для более глубокой интеграции и расширенных возможностей работы с PDF.