下面的脚本能够使用CAM::PDF
. 但是,输出已损坏。PDF 阅读器仍然可以打开它,但他们抱怨错误。例如,mupdf
说:
error: no XObject subtype specified
error: cannot draw xobject/image
warning: Ignoring errors during rendering
mupdf: warning: Errors found on page
现在,CAM::PDF
CPAN 上的页面(此处)列出了deleteObject()
“更深层次的实用程序”下的方法,大概意味着它不打算供公众使用。此外,它警告说:
此函数不处理对此对象的依赖关系。
我的问题是:从 PDF 文件中删除对象的正确方法是什么CAM::PDF
?如果问题与依赖关系有关,如何在处理依赖关系的同时删除对象?
有关如何使用其他工具从 PDF 中删除图像,请参阅此处的相关问题。
use CAM::PDF;
my $pdf = new CAM::PDF ( shift ) or die $CAM::PDF::errstr;
foreach my $objnum ( sort { $a <=> $b } keys %{ $pdf->{xref} } ) {
my $xobj = $pdf->dereference ( $objnum );
if ( $xobj->{value}->{type} eq 'dictionary' ) {
my $im = $xobj->{value}->{value};
if
(
defined $im->{Type} and defined $im->{Subtype}
and $pdf->getValue ( $im->{Type} ) eq 'XObject'
and $pdf->getValue ( $im->{Subtype} ) eq 'Image'
)
{
$pdf->deleteObject ( $objnum );
}
}
}
$pdf->cleanoutput ( '-' );