Free Support Forum - aspose.com

(Aspose.PDF For .NET) PDFに含まれる画像の色を変える方法

お世話になっております。
Aspose.Pdf for .NETを使ってPDFの色を変換する処理を実装しようとしています。
PDFに含まれる色を変更する方法を教えてください。

※ColorSpaceだけでなく、色をCMYKからCMY(Kは使わない)に変更しようとしています。

PDFに含まれる次のものを変換しようとしています。

  1. 文字
  2. Vectorオブジェクト
  3. 画像(Image)

[1.文字]と[2.Vectorオブジェクト]は、Aspose.Pdf For Javaの次のサンプルを参考に色を変更することができました。

しかし[3. 画像(Image)]の色を変換する方法がわかりません。

Page.ResourcesでPDFに含まれる画像を取得することはできるのですが、
XImageに色を変換した画像を保存する方法がわかりませんでした。
Aspose.PDFを使って、PDFに含まれる画像の色を入れ替えることは可能か教えてください。

Document doc = new Document(@"C:\WORK\Aspose\Overprint\OverPrintSample.pdf");

foreach (Page page in doc.Pages)
{
    foreach (XImage image in page.Resources.Images)
    {
    
        // if colospace is not DeviceN then convert image color
        
            Bitmap original = new Bitmap(image.ToStream());
            
            Bitmap converted = Convert(original);
            
            // Set [converted] to XImage object.
    }
}

また、その際に画像(Image)にセットされているColorSpaceを使って判定したいのですが、そのようなことは可能かどうか教えてください。

@hh452jlaefa

Aspose.PDFは、PDFドキュメント内の画像をグレースケールに変換する方法を提供します。 たとえば、以下のコードスニペットを確認してください。

Document doc = new Document(dataDir + "TifftoPDF.pdf");
Aspose.Pdf.RgbToDeviceGrayConversionStrategy strategy = new RgbToDeviceGrayConversionStrategy();
for (int idxPage = 1; idxPage <= doc.Pages.Count; idxPage++)
{
 Page page = doc.Pages[idxPage];
 strategy.Convert(page);
}
doc.Save(dataDir + "output.pdf");

それでも要件を達成できない場合は、上記のコードスニペットを使用してお知らせください。 参考までに、サンプルソースと予想される出力PDFドキュメントも共有してみてください。

回答ありがとうございます。

以下の方法試してみようと思います。

  1. PDF内の画像をXImage.toStreamで取り出す。
  2. 取出した画像を色変換する(自分たちで実装する)
  3. 変換した画像で、PDF内の画像をReplaceする

@hh452jlaefa

あなたが言及した上記のアプローチを確実に試すことができます。 ただし、Aspose.PDFまたは任意のAspose APIを使用して画像の色空間を変更する方法またはプロセスを知りたい場合は、共有してください。