Aspose PDF For .NETを使用しています。
Page.AddStampで追加した画像にオーバープリントを適用する方法を教えてください。
■Page.AddStamp
Aspose PDF For .NETを使用しています。
Page.AddStampで追加した画像にオーバープリントを適用する方法を教えてください。
■Page.AddStamp
お客様の要件の実現可能性を調査する必要があります。 ただし、スタンプでオーバープリントプレビューが有効になっているサンプルPDFドキュメントを共有してください。 それに応じて、フィードバックをさらに共有します。
回答ありがとうございます。
Aspose.PDF For .NETを購入済です。
評価版のAspose.PSD For.NETを使って、オーバープリントを設定したPDFを作っています。
pdfAndPngFile.zip (450.9 KB)
しかし、オーバープリントを設定しても、Acrobat Readerで確認をするとオーバープリントが設定されていないようです。
お手数をおかけしますが、まちがっている箇所を教えてください
private static void StampPdf()
{
// create overprint stamp.pdf with Aspose.PSD
PsdUtils.CreateStampPdf();
// document PDF
PdfFileStamp docPdf = new PdfFileStamp();
docPdf.BindPdf(@"C:\WORK\Aspose\original_doc.pdf");
// stamp PDF
Aspose.Pdf.Facades.Stamp stampPdf = new Aspose.Pdf.Facades.Stamp();
stampPdf.BindPdf(@"C:\WORK\Aspose\stamp.pdf", 1);
stampPdf.SetOrigin(20, 20);
stampPdf.IsBackground = false;
docPdf.AddStamp(stampPdf);
docPdf.Save(@"C:\WORK\Aspose\stamped_doc.pdf");
docPdf.Close();
}
以下は、Aspose.PSDでオーバープリントを設定したPDFを作るコード。
public static void CreateStampPdf()
{
FileStream stream = new FileStream(@"C:\WORK\Aspose\stamp.png", FileMode.Open);
Layer layer = new Layer(stream);
PsdOptions psdOptions = new PsdOptions();
psdOptions.Source = new FileCreateSource(@"C:\WORK\Aspose\stamp.psd");
psdOptions.ColorMode = ColorModes.Cmyk;
psdOptions.CompressionMethod = CompressionMethod.Raw;
psdOptions.Version = 6;
PsdImage psdImage = (PsdImage)PsdImage.Create(psdOptions, layer.Width,layer.Height);
psdImage.AddLayer(layer);
// if resouce is null then lyr.BlendingOptions throws System.ArgumentNullException.
LayerResource idResource = new LyidResource(psdImage.LinkedLayersManager.GetLinkGroupId(psdImage.Layers[1]) );
LayerResource[] resources = new LayerResource[1] { idResource };
psdImage.Layers[1].Resources = resources;
// all layers overprint true.
foreach (Layer lyr in psdImage.Layers)
{
StrokeEffect effect = lyr.BlendingOptions.AddStroke(FillType.Color);
effect.Overprint = true;
}
// save stamp.pdf
psdImage.Save(@"C:\WORK\Aspose\stamp.pdf", new PdfOptions());
}
Aspose.PDF for .NET 21.1でシナリオをテストしているときに、最後に問題に気付くことができました。 PDFスタンプが出力PDFに正しく配置されていませんでした。
ただし、stamp.pdfファイルでオーバープリントが有効になっていることを示すスクリーンショットを共有してください。 また、Aspose.PDFを使用して最終的に生成する予定の出力PDFドキュメントを共有してください。 それに応じて、さらにサポートを進めます。
ご不便をおかけしてしまい申し訳ございません。
確認ありがとうございます。
stamp.pdfを確認しました。
(今回は別の2つの画像を使ってstamp.pdfを作っています)
オーバープリントが有効になっていませんでした。(ScreenShot_AdobeReader.png)
Aspose.PSDを使ってオーバープリントを設定する方法が間違っていたようです。
StrokeEffect.Overprint = trueを設定したのですが、この方法ではオーバープリントは有効にはならないのでしょうか。
たびたび、お手数をお掛けして申し訳ございませんが、よろしくお願いいたします。
Overprint.zip (940.7 KB)
FileStream streamBlue = new FileStream(@"C:\WORK\Aspose\Overprint\blue_CMYK.png.jpg", FileMode.Open);
Layer layerBlue = new Layer(streamBlue);
FileStream streamOrange = new FileStream(@"C:\WORK\Aspose\Overprint\Orange_CMYK.png.jpg", FileMode.Open);
Layer layerOrange = new Layer(streamOrange);
PsdOptions psdOptions = new PsdOptions();
psdOptions.Source = new FileCreateSource(@"C:\WORK\Aspose\Overprint\stamp.psd");
psdOptions.ColorMode = ColorModes.Cmyk;
psdOptions.CompressionMethod = CompressionMethod.Raw;
psdOptions.Version = 6;
PsdImage psdImage = (PsdImage)PsdImage.Create(psdOptions, Math.Max(layerBlue.Width , layerOrange.Width), Math.Max(layerBlue.Height, layerOrange.Height));
LayerResource idResource;
LayerResource[] resources;
psdImage.AddLayer(layerBlue);
// if resouce is null then lyr.BlendingOptions throws ArgumentNullException.
idResource = new LyidResource(psdImage.LinkedLayersManager.GetLinkGroupId(psdImage.Layers[1]));
resources = new LayerResource[1] { idResource };
psdImage.Layers[1].Resources = resources;
psdImage.AddLayer(layerOrange);
// if resouce is null then lyr.BlendingOptions throws ArgumentNullException.
idResource = new LyidResource(psdImage.LinkedLayersManager.GetLinkGroupId(psdImage.Layers[2]));
resources = new LayerResource[1] { idResource };
psdImage.Layers[2].Resources = resources;
// all layers overprint true.
foreach (Layer lyr in psdImage.Layers)
{
StrokeEffect effect = lyr.BlendingOptions.AddStroke(FillType.Color);
effect.Overprint = true;
}
// save stamp.pdf
psdImage.Save(@"C:\WORK\Aspose\Overprint\stamp.pdf", new PdfOptions());
オーバープリントが有効になっているPDFを生成できないため、この問題はAspose.PSDに関連しているようです。 Aspose.PSDを参照してケースを確認しており、フィードバックをお送りします。
確認ありがとうございます。
よろしくお願いいたします。
問題をさらに調査して解決するために、問題追跡システムでID PSDNET-811の問題を作成しました。 このスレッドは問題にリンクされているため、問題が修正されたら通知を受けることができます。
確認ありがとうございます。回答お待ちしております。
念のため確認ですが、Aspose.PSDは評価版(Trial)を使っています。
評価版(Trial)なので、機能を制限しているのが原因ではないでしょうか?
通常、評価版を使用する場合、透かしが出力に表示されます。 他のいくつかの機能も制限されています。 問題が修正され次第、更新します。 30日間の無料トライアルライセンスを使用してAPIを評価することも検討できます。
すいません、確認したところ重ねる画像ファイルの色(CMYK)に問題がありそうなので、再度確認します
CMYKが重なるの2つのLayer(image)を重ねたのが原因かと思ったのですが、
単純にKだけのtifをLayerに追加して作ったPDFもOverprintが有効になりませんでした。
申し訳ございませんが、引き続き確認をお願いします。
共有サンプルコードや画像と同様に、使用しているAspose.PSD for .NETのバージョンを共有していただけませんか。画像の読み込みでも例外が発生します。
image.png (717.7 KB)
回答おくれてしまい、すいませんでした。
Aspose.PSDは、NuGetから取得した20.12.0(Trial)を使っています。AsposePSD.png (64.2 KB)
その後、Overprintについて色々調べました。
そしてPDFに次のような操作が必要だとわかりました。
Aspose製品(PSD , PDF , または他の製品)でこれらの操作をすることができるのか教えてください。
現在、要求されたサポートはAspose.PSDAPIでは利用できません。 ID PSDNET-821のチケットが問題追跡システムで作成され、要求されたサポートを提供します。 このスレッドは問題にリンクされているため、問題が修正されたら通知を受けることができます。