以下のスクリプトは、CAM::PDF
を使用してPDFファイルからすべての画像を削除できます。ただし、出力は破損しています。それにもかかわらず、PDFリーダーはそれを開くことができますが、彼らはエラーについて不平を言う。例えば、mupdf
言う:CAM :: PDFを使用してPDFからすべてのイメージを壊さずに削除するにはどうすればいいですか?
error: no XObject subtype specified
error: cannot draw xobject/image
warning: Ignoring errors during rendering
mupdf: warning: Errors found on page
は今、CPANでCAM::PDF
ページ(here)は、おそらくそれは公共の使用のために意図されていないことを意味し、「ディーパー・ユーティリティ」の下deleteObject()
方法を示しています。さらに、次のように警告します。
この関数はこのオブジェクトの依存関係を処理しません。
私の質問は、CAM::PDF
を使用してPDFファイルからオブジェクトを削除する正しい方法は何ですか?問題が依存関係と関係している場合は、その依存関係を処理しながらオブジェクトを削除するにはどうすればよいですか?
他のツールを使用してPDFから画像を削除する方法については、hereを参照してください。
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 ('-');
mupdfエラーが発生している壊れたpdfがありますか?私は同様の問題をデバッグしており、大きな助けになるでしょう:) – Darajan