У меня есть задача создать инструмент PHP с использованием TCPDF/FPDI, который берет существующие PDF-файлы и преобразует их в стандарт PDF/A при добавлении сертификата.
К сожалению, все сгенерированные PDF-файлы не соответствовали стандарту PDF/A. Я также попытался сгенерировать случайный тестовый документ, как показано здесь https://tcpdf.org/examples/example_065/ но и этот документ не соответствовал.
Это мой код:
public static function convertPdf($path)
{
$pdf = new \FPDI(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false, true);
$pagecount = $pdf->setSourceFile(ROOT . $path);
for ($i = 1; $i <= $pagecount; $i++) {
$tpl = $pdf->importPage($i);
$size = $pdf->getTemplateSize($tpl);
$orientation = $size['h'] > $size['w'] ? 'P':'L';
$pdf->AddPage($orientation);
$pdf->useTemplate($tpl, null, null, $size['w'], $size['h'], true);
}
$pdf->SetCreator("Creator");
$pdf->SetAuthor('Nicola Asuni');
$pdf->SetTitle('My PDFA example');
$pdf->SetSubject('TCPDF Tutorial');
$certificatePath = 'file://' . ROOT . '/libs/TCPDF-master/examples/data/cert/tcpdf.crt';
// set additional information
$info = array(
'Name' => 'TCPDF',
'Location' => 'Office',
'Reason' => 'Testing TCPDF',
'ContactInfo' => 'http://www.tcpdf.org',
);
$pdf->setSignature($certificatePath, $certificatePath, 'tcpdfdemo', '', 2, $info);
$pdf->addEmptySignatureAppearance(0, 0, 0, 0);
$pdf->Output('example_065.pdf', 'I');
}
Я использовал этот https://www.pdf-online.com/osa/validate.aspx для проверки моего PDF. Он генерирует этот вывод:
Соответствие pdfa-1b Результат Документ не соответствует PDF/A. Подробности Проверка файла "testerrrrrrr.pdf" на соответствие уровню pdfa-1b После маркера EOF есть данные. pdfaExtension:schemas/[0] :: Отсутствует обязательное поле «свойство» в типе значения «Схема». pdfaExtension:schemas/[0] :: Отсутствует обязательное поле 'valueType' в типе значения 'Schema'. pdfaExtension:schemas/[1] :: Отсутствует обязательное поле 'valueType' в типе значения 'Schema'. pdfaExtension:schemas/[2] :: Отсутствует обязательное поле 'valueType' в типе значения 'Schema'. Словарь внешнего вида не содержит записи. Ключ S имеет значение Прозрачность, которое запрещено. Документ не соответствует требуемому стандарту. Формат файла (заголовок, трейлер, объекты, внешние ссылки, потоки) поврежден. Документ содержит прозрачность. Документ содержит аннотации или поля формы с двусмысленным или неправильным оформлением. Метаданные документа либо отсутствуют, либо противоречивы, либо повреждены. Сделанный.