Некоторая информация о вещах, которые вы использовали ранее: FPDF не может обрабатывать существующие PDF-файлы, поэтому, я думаю, вы использовали FPDI в сочетании с FPDF для повторного создания исходного документа.
Бесплатная версия FPDI не поддерживает функцию сжатия, представленную в PDF 1.5.В любом случае мы предлагаем коммерческое дополнение, которое добавляет поддержку для этого: FPDI PDF-Parser .
Во всяком случае, ни FPDI, ни FPDI PDF-Parser не поддерживают чтение зашифрованных / защищенных PDF-документов..
НО: Специально для нанесения водяных знаков мы предлагаем другой продукт (не бесплатный!), Который сделан именно для этой цели: SetaPDF-Stamper компонент.
Он также позволяетВы можете добавить новый контент в документы PDF, которые также зашифрованы / защищены.Это можно сделать с помощью аутентификации с паролем владельца или в обход ограничения (мы можем предложить поддержку для этого, если мы точно знаем, что вы делаете через наш канал поддержки).
Aпростой водяной знак можно сделать так:
require_once('library/SetaPDF/Autoload.php');
// or if you use composer require_once('vendor/autoload.php');
// create a file writer
$writer = new SetaPDF_Core_Writer_File('processed/directory/result.pdf');
// load document by filename
$document = SetaPDF_Core_Document::loadByFilename('your.pdf', $writer);
// create a stamper instance for the document
$stamper = new SetaPDF_Stamper($document);
// create a font for this document
$font = new SetaPDF_Core_Font_TrueType_Subset($document, 'fonts/DejaVuSans.ttf');
// create a stamp with the created font and font size 60
$stamp = new SetaPDF_Stamper_Stamp_Text($font, 60);
// center the text to the text block
$stamp->setAlign(SetaPDF_Core_Text::ALIGN_CENTER);
// set text for the stamp
$stamp->setText($theInvoiceNo);
// add the stamp to the center of the page and rotate it by 60 degrees
$stamper->addStamp(
$stamp,
[
'position' => SetaPDF_Stamper::POSITION_CENTER_MIDDLE,
'rotation' => 60
]
);
// stamp the document
$stamper->stamp();
// save the file and finish the writer (e.g. file handler will closed)
$document->save()->finish();