У меня есть PDF-файл с блоками PDFlib. Ни один из этих блоков не был заполнен. Мне нужно скопировать эти блоки, но не содержимое страницы, на набор других PDF-документов, каждый со своим содержимым. Блоки не должны быть заполнены.
Идея заключается в том, что каждый документ представляет собой форму, но каждый немного отличается. Все поля формы находятся в одном месте, поэтому нам просто нужно скопировать блоки, включая их расположение. Я уже проверил эта страница документации, который описывает это на том, что кажется единым документом с блоками для нового (пустого) документа.
Любая помощь приветствуется.
в вставленном образце вы также можете импортировать конечный PDF-файл и разместить его на странице перед размещением скопированных блоков.
С другой стороны, вы можете использовать плагин для блоков Acrobat и интерактивно копировать блоки из PDF-файла вашего ресурса в PDF-файлы назначения. Преимущество при выполнении этого в блоке плагин, вы можете сделать это небольшие вспомогательные компоненты напрямую.
Одна последняя идея:
Эта техника также используется путем размещения блокировать контент под контентом.
Я работал до PHP
скрипт для обработки этого. Увидеть ниже:
try{
# Create a new PDFLib instance
$pdf = new PDFlib();
$pdf->set_option('errorpolicy=return');
$pdf->set_option('stringformat=utf8');
# Create the optput document
if(!($pdf->begin_document('','')))
throw new Exception('Error: '.$pdf->get_errmsg());
# Open the input document, in this case the block template file
$block_file = $pdf->open_pdi_document('block_template.pdf','');
if($block_file == 0) throw new Exception('Error: '.$pdf->get_errmsg());
# Also open the target file we need to copy blocks to
$target_file = $pdf->open_pdi_document('target_file.pdf','');
if($target_file == 0) throw new Exception('Error: '.$pdf->get_errmsg());
# Find the number of pages in the document
$pages = $pdf->pcos_get_number($block_file,'length:pages');
# Loop over each page
for($page=0;$page<$pages;$page++){
# Open the target file to clone its contents
$target_input_page = $pdf->open_pdi_page($target_file,1,'');
if($target_input_page == 0) throw new Exception('Error: '.$pdf->get_errmsg());
# Create a blank PDF page with a dummy size
$pdf->begin_page_ext(10,10,'');
# Copy the contents of the input page to the new page. This also overrides the size set by the dummy page
$pdf->fit_pdi_page($target_input_page,0,0,'adjustpage');
# Count the blocks on this template file page
$block_count = (int) $pdf->pcos_get_number($block_file, 'length:pages['.$page.']/blocks');
# Loop over the blocks and copy them
for($i=0;$i<$block_count;$i++){
$block_name = $pdf->pcos_get_string($block_file,'pages['.$page.']/blocks['.$i.'].key');
if ($pdf->process_pdi($block_file,0,'action=copyblock block={pagenumber='.($page+1).' blockname={'.$block_name.'}}') == 0)
throw new Exception("Error: " . $pdf->get_errmsg());
}
# End this page
$pdf->end_page_ext('');
# Close the pdf page
$pdf->close_pdi_page($target_input_page);
}
# Close the PDF document
$pdf->close_pdi_document($block_file);
$pdf->close_pdi_document($target_file);
$pdf->end_document('');
# Get the output buffer
$buffer = $pdf->get_buffer();
# Write out the converted file
$output_file = fopen('output_file.pdf','w+');
fwrite($output_file,$buffer);
fclose($output_file);
}
catch(PDFlibException $e){
error_log("PDFlib exception occurred:\n" .
"[" . $e->get_errnum() . "] " . $e->get_apiname() . ": " .
$e->get_errmsg() . "\n");
exit(1);
}
catch(Exception $e){
error_log($e);
exit(1);
}