java - PDFBox 渐变虚线图案

标签 java pdf pdfbox dotted-line

我已经可以使用 contentStream 和方法添加行:

setLineWidth(h) - 设置线条粗细

setLineDashPattern(pattern, period) - 模式创建所需的空间和点,例如新的 float[]{0.075,2}

setLineCapStyle(2) - 将所有点设置为矩形

moveTo(x,y) - 设置起点

lineTo(x,y) - 设置终点

Stroke() - 打印行

但现在对我来说需要创建从点中心到点边缘的渐变

有人可以给我建议如何添加渐变吗?

最佳答案

这是基于源代码中的CreateGradientShadingPDF.java示例。两个圆圈的位置相同,但第二个圆圈是空的。函数中c0为白色,c1为黑色。

PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);

// type 2 (exponential) function with attributes
COSDictionary fdict = new COSDictionary();
fdict.setInt(COSName.FUNCTION_TYPE, 2);
COSArray domain = new COSArray();
domain.add(COSInteger.get(0));
domain.add(COSInteger.get(1));
COSArray c0 = new COSArray();
c0.add(COSFloat.get("1"));
c0.add(COSFloat.get("1"));
c0.add(COSFloat.get("1"));
COSArray c1 = new COSArray();
c1.add(COSFloat.get("0"));
c1.add(COSFloat.get("0"));
c1.add(COSFloat.get("0"));
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);

// radial shading with attributes
PDShadingType3 radialShading = new PDShadingType3(new COSDictionary());
radialShading.setColorSpace(PDDeviceRGB.INSTANCE);
radialShading.setShadingType(PDShading.SHADING_TYPE3);
COSArray coords2 = new COSArray();
coords2.add(COSInteger.get(100));
coords2.add(COSInteger.get(400));
coords2.add(COSInteger.get(50)); // radius1
coords2.add(COSInteger.get(100));
coords2.add(COSInteger.get(400));
coords2.add(COSInteger.get(0)); // radius2
radialShading.setCoords(coords2);
radialShading.setFunction(func);

// invoke shading from content stream
// compress parameter is set to false so that you can see the stream in a text editor
try (PDPageContentStream contentStream = new PDPageContentStream(document, page, AppendMode.APPEND, false))
{
    contentStream.shadingFill(radialShading);
}

有关径向着色的更多背景信息可以在 PDF 32000 specification 中找到。 .

关于java - PDFBox 渐变虚线图案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55024595/

相关文章:

java - PDFBox PDDocument 添加 pdf-layout 文档?

java - heroku Nodejs 应用程序 - events.js :167 Error Unhandled 'error' event : spawn java ENOENT

javascript - 从 javascript/cordova 编写 pdf

java - 旋转不正确 - AVL 树,JAVA

java - 如何从文本文件中读取 map 特定数据?

java - 在 tomcat 环境中获取 javax.net.ssl.SSLHandshakeException

asp.net - 在 ASP.NET 中生成 PDF 文档

iphone - 如何在ios中将数字签名图像添加到pdf中?

java - 如何使用pdfbox从pdf中提取粗体文本?

java - 为什么我对 QueueConnectionFactory 的 JNDI 查找返回空值?