У нас есть документ, который нужно разрезать по частям макета в виде отдельных PDF-файлов:
Например, заголовок -> заголовок.pdf, абзацы -> параграф 01.pdf и т. Д.
Чтобы достичь этого, мы используем координаты, чтобы знать, где эти части размещены.
(Исходный документ взят из инструмента OCR, сохраняя эти координаты)
Наша проблема в том, что вырезанные фрагменты являются простыми копиями из исходного документа, но с замаскированным содержимым границы документа расположены так, что оставляется видимой только нужная часть.
Таким образом, полученные документы имеют одинаковый размер файла.
Как заставить PDFLib вырезать ненужные части? Я надеюсь, что есть решение. Мы попробовали это с большим количеством комбинаций тримбоксов, кропбоксов и тому подобного, но безрезультатно.
Вот код, который мы используем:
$fWidth = 200;//width of document part
$fHeight = 20;//height of document part
$fMinXPoint = 10;//left coordinate x
$fMinYPoint = 10;//left coordinate y
$oPdf = new \PDFLib();
$oPdf->begin_document('', 'optimize=true linearize=true inmemory=true');
$oPdf->set_option('compress=9');
$oPdf->set_option('topdown=true');
$oLoadedDocument = $oPdf->open_pdi_document($sRealFilePath, '');// original pdf
$oPage = $oPdf->open_pdi_page(
$oLoadedDocument,
1,
'clippingarea=crop'
);
$oPdf->begin_page_ext($fWidth, $fHeight, '');
$oPdf->fit_pdi_page($oPage, -$fMinXPoint, -$fMinYPoint, 'position={left top}');
$oPdf->end_page_ext("cropbox={0 0 $fWidth $fHeight}");
$oPdf->close_pdi_page( $oPage );
$oPdf->close_pdi_document( $oLoadedDocument );
$oPdf->end_document('');
Как заставить PDFlib вырезать ненужные части?
это невозможно с PDI. Для PDI (расширение PDF Import из PDFlib) импортируемая страница
является «черным ящиком», и все содержимое страницы будет скопировано в выходной PDF.
Невозможно управлять содержимым страницы с помощью PDFlib + PDI, что необходимо для удаления содержимого со страницы.
Других решений пока нет …