将PDF文件中的A4页面拆分为A5页面

时间:2011-02-27 14:26:07

标签: pdf split

  

可能重复:
  Split A4 PDF page into two A5 and back again

我在PDF文件中有A4页面,如下所示:

this pdf

如何将每个A4页面拆分为两个A5页面?

3 个答案:

答案 0 :(得分:8)

尝试:

  • Briss(免费软件)易于使用,只拖放矩形以创建新页面。
  • A-PDF Page Cut(共享软件)不知道......它为新页面添加了水印。

答案 1 :(得分:2)

困难的方法:使用ConTeXt / LuaTeX重新排列页面。

合理的方法:pdf shufflerPDFjam和/或PDF Split & Merge的组合可以完成这项工作。

答案 2 :(得分:1)

如果某个现有PDF工具尚未执行此功能,那么这是一个关于如何使用CAM::PDF解决问题的高级头脑风暴。我不确定它是否有用。

  • 复制页面
  • 旋转内容
  • 将每个页面的裁剪框设置为感兴趣的一半

在我的脑海中,我不知道额外的超出裁剪框内容是否会被隐藏,或者它是否会影响渲染......

更新:我实施了一个大多数工作,简单化的解决方案,如下所示。它复制有问题的页面,旋转两个副本,并在每个页面上设置CropBox,选择第一页的左半部分和第二页的右半部分。您可能不需要轮换,不确定。

#!/usr/bin/perl
use strict;
use warnings;
use CAM::PDF;
my $pdffile = 't/sample1.pdf';
my $pdfout = 'temp2.pdf';
my $pagenum = 1;

my $pdf = CAM::PDF->new($pdffile) or die $CAM::PDF::errstr;

my ($objnum, $gennum) = $pdf->getPageObjnum($pagenum);
my $pagedict = $pdf->getPage($pagenum);
$pagedict->{Rotate} = CAM::PDF::Node->new('number', 90);
my $oldbox = $pdf->getValue($pagedict->{CropBox} || $pagedict->{MediaBox});
my @box = map {$pdf->getValue($_)} @{$oldbox};
$pagedict->{CropBox} = CAM::PDF::Node->new('array', [
   map {CAM::PDF::Node->new('number', $_)} $box[0], $box[1], $box[2], ($box[3]+$box[1])/2
]);

my $duplicate = CAM::PDF->new($pdffile) or die $CAM::PDF::errstr;
$duplicate->extractPages($pagenum);
$pdf->appendPDF($duplicate); # appends at end instead of inserting                                                                                                  

$pagedict = $pdf->getPage($pdf->numPages());
$pagedict->{Rotate} = CAM::PDF::Node->new('number', 90);
$pagedict->{CropBox} = CAM::PDF::Node->new('array', [
   map {CAM::PDF::Node->new('number', $_)} $box[0], ($box[3]+$box[1])/2, $box[2], $box[3]
]);

if ($objnum) {
   $pdf->{changes}->{$objnum} = 1;
}
$pdf->cleanoutput($pdfout);