1

このサイトで ABCpdf の質問を見たことがありますが、これはまだ見ていません。私は、いくつかの特定のオプションを使用して PDF 出力を必要とするプロジェクトに取り組んでいます。ABCpdf は API を通じてこれを提供できるようですが、ドキュメントがわかりにくく、不完全です。

using (var xpsStream = (MemoryStream)xps.Write(doc))
{
    xpsStream.Position = 0;
    pdfDoc.Clear();

    pdfDoc.Read(xpsStream, new XReadOptions
    {
        FileExtension = "xps"
    });

    pdfDoc.Rendering.DotsPerInch = 72;
    pdfDoc.Rendering.ColorSpace = XRendering.ColorSpaceType.Cmyk;
    pdfDoc.Rendering.IccCmyk = "device";

    pdfDoc.Save(stream);
}

これは、設定されたレンダリング プロパティに遭遇しない PDF をレンダリングします。ドキュメントには、レンダリング プロパティを保存するには、XRendering クラスの Save() メソッドを介して保存する必要があると記載されています。だから私は次のようなことをしなければならないでしょう:

    pdfDoc.Rendering.DotsPerInch = 72;
    pdfDoc.Rendering.ColorSpace = XRendering.ColorSpaceType.Cmyk;
    pdfDoc.Rendering.IccCmyk = "device";
    pdfDoc.Rendering.Save("blah", stream);   // they want a "name" argument

彼らのドキュメントの name 引数は、「必要な画像の種類を決定するために使用されるダミー ファイル名」と説明されています。 PNG、.BMP、.JP2、.EMF、.PS、.EPS

その後、後者のバージョンのコードが実行された後、出力が得られますが、それは PDF ではなく、TIF、JPG、またはそのリストから選択したものです。「mom.pdf」と言うと、エラーがスローされます。これは、XRendering の Save() メソッドの説明を開始する方法が「このメソッドを使用して PDF をレンダリングする」であるため、ひどいものです。

4

1 に答える 1

2

ここには 2 つの異なる点があります。

1) ドキュメントを PDF、XPS、またはその他の同様のドキュメント形式で保存する Doc.Save メソッド。

2) 現在のページの現在のセクションを TIFF や JPEG などの画像形式にレンダリングする Doc.Rendering.Save。

Doc.Rendering プロパティは、レンダリングを制御するために使用されます。ドキュメントを保存していません。

Doc の保存を制御するには、Doc.SaveOptions が必要です。

2 つを混在させることはできません。

そう...

あなたのコードから、XPS ドキュメントをインポートして CMYK に変換しようとしているように思えます。

これを行う方法は、Doc.Save を使用して保存する前に、ドキュメントのカラー スペースを変更することです。

PDF の色空間を変更するには、RecolorOperation クラスを使用する必要があります。これにより、ドキュメントの色空間を RGB、CMYK、グレースケール、ICC / ICM、または実際に好きなものに変更できます。

私が間違っていれば、TIFF、JPEG、JPEG 2000、PSD などの CMYK 出力が必要になるでしょう。これを行うには、doc.Rendering オプションを使用して色空間とビット深度 (コンポーネントごとに 8 ビットまたは 16 ビット) を制御し、doc.Rendering.Save を呼び出す必要があります。

于 2012-11-16T13:27:19.437 に答える