为了准备用于打印的 PDF 文件,我正在寻找一种命令行/编程方式来修改现有的 PDF 文件并执行以下操作:
- 在每页的每一边添加一个白色的 3 毫米边距(因此新 PDF 的宽度将增加 6 毫米,高度将增加 6 毫米)
- 在每一页上添加裁剪标记

以下是我尝试过的一些命令:

我首先尝试添加一个 BleedBox,但这没有达到预期的效果,因为它没有调整 pdf 的大小:

gs -sDEVICE=pdfwrite -o out.pdf -c "[/BleedBox[54 54 1314 810] /PAGES pdfmark" -f in.pdf

以下ghostscript命令放大pdf并在每页的顶部和右侧添加一个白边,但内容没有居中:
gs -sDEVICE=pdfwrite -o out.pdf -r300x300 -g3000x3000 -f in.pdf

我还尝试使用 imagemagick 调整 pdf 的大小,但以下命令也缩放了 pdf 的内容:
convert -density 300 -colorspace RGB -quality 100 -border 200x200 in.pdf out.pdf

到目前为止,我还没有找到任何添加裁剪标记的方法。

任何人都可以帮我解决边距和裁剪标记吗?

提前致谢!

亲切的问候,
迈克尔

最佳答案

迈克尔,

检查 http://www.setasign.com/products/fpdi/about

请参阅以下代码段以使用库向文档添加 3 毫米。您还可以使用相同的库添加图像(裁剪标志)。你仍然需要找出如何将它们放在角落里......




require_once('library/fpdf.php');
require_once('library/fpdi.php');

$name="cropsign.png";
$im = imagecreatefrompng($name);
imagefilter($im, IMG_FILTER_COLORIZE, 0, 255, 0);
imagepng($im,$name);

$pdf = new FPDI('P','mm',array(213,300));// original 210/297 for A4 document
if (file_exists("./".$file)){
    $pagecount = $pdf->setSourceFile($file);
} else {
    echo 'Fail';
    return FALSE;
}
 for($i=1; $i <= $pagecount; $i++) {
    $tpl = $pdf->importPage($i);
    $pdf->addPage();
    $pdf->useTemplate($tpl, 1, 1, 0, 0, TRUE);
    $pdf->Image($name, $xxx, $yyy, 0, 0, 'png');
    $pdf->Image($name, $xxx, $yyy, 0, 0, 'png');
    $pdf->Image($name, $xxx, $yyy, 0, 0, 'png');
    $pdf->Image($name, $xxx, $yyy, 0, 0, 'png');
}
if ($outdir === TRUE){
    return $pdf->Output();
} else {
    return $pdf;
}

关于php - 向现有 PDF 添加边距和裁剪标记,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21830581/

10-12 12:24
查看更多