PDFBoxでグラデーションを作成するにはどうすればよいですか?または、おそらく「できますか?」PDFBoxでグラデーションをバックグラウンドで作成する
私はそれらを作成し、jpegまたは何かにエクスポートしたくありません。私は軽い文書が必要なので、これは何らかの形でプログラムされなければなりません。
アイデア?
PDFBoxでグラデーションを作成するにはどうすればよいですか?または、おそらく「できますか?」PDFBoxでグラデーションをバックグラウンドで作成する
私はそれらを作成し、jpegまたは何かにエクスポートしたくありません。私は軽い文書が必要なので、これは何らかの形でプログラムされなければなりません。
アイデア?
多くの研究の末、私は最終的に小さな "自分の勾配の作成者"を作成しました!これは次のようになります。
COSDictionary fdict = new COSDictionary();
fdict.setInt(COSName.FUNCTION_TYPE, 2); // still not understaning that...
COSArray domain = new COSArray();
domain.add(COSInteger.get(0));
domain.add(COSInteger.get(1));
COSArray c0 = new COSArray();
c0.add(COSFloat.get("0.64176"));
c0.add(COSFloat.get("0.72588"));
c0.add(COSFloat.get("0.78078"));
COSArray c1 = new COSArray();
c1.add(COSFloat.get("0.57176"));
c1.add(COSFloat.get("0.62588"));
c1.add(COSFloat.get("0.70078"));
fdict.setItem(COSName.DOMAIN, domain);
fdict.setItem(COSName.C0, c0);
fdict.setItem(COSName.C1, c1);
fdict.setInt(COSName.N, 1);
PDFunctionType2 func = new PDFunctionType2(fdict);
PDShadingType2 axialShading = new PDShadingType2(new COSDictionary());
axialShading.setColorSpace(PDDeviceRGB.INSTANCE);
axialShading.setShadingType(PDShading.SHADING_TYPE2);
COSArray coords1 = new COSArray();
coords1.add(COSInteger.get(0));
coords1.add(COSInteger.get(0));
coords1.add(COSInteger.get(850)); // size of my page
coords1.add(COSInteger.get(600));
axialShading.setCoords(coords1); // so this sets the bounds of my gradient
axialShading.setFunction(func); // and this determines all the curves etc?
CStr.shadingFill(axialShading); // where CStr is a ContentStream for my PDDocument
私はこれを他の人に任せます。あなたの意見を残して、このコードを改善するための巧妙なアイディアを私に見せてください:)
この関数は、軸上の入力値から色(ここではRGB色空間ですが、CMYKなど)も計算します。タイプ2関数は指数補間関数であり、最も一般的に使用されます。 PDF仕様の7.10.3で説明します。結果の値が2つの境界C0とC1の間に入ると想像してみてください。実際に数学を理解する必要はありません。 –
私は、0-1の間のこれらの色の値は、RGBの0-255の間のこれらの値に比例するという考えを得ました。それは私をもっと近づけた。それは非常に便利なライブラリです、私はそれが好きです!確かにそうです。 –
PDFの色は0と1の間です。したがって、1 0 0は完璧な赤です。 –
どのような勾配が欲しいですか?アキシャルまたはラジアル?どのような境界?どのような色ですか?あなたはソースコードのダウンロードからCreateGradientShadingPDF.javaを試しましたか? –
私はウェブサイトからダウンロードした私の瓶に入れていないようです。外部のウェブサイトからダウンロードする必要がありますか? –
ソースのダウンロードに含まれているはずです。そうでない場合は、https://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/CreateGradientShadingPDF.java?view=markup&sortby=dateから入手してください。 –