问题标签 [batik]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
44317 浏览

svg - JavaFX 2.2 中的 SVG 图像

我是 JavaFX 2.2 的新手,到目前为止,我找不到在我的 JavaFX 2.2 应用程序中显示 SVG 图像的方法。我看了看 Batik,但它并没有对我有用,因为它转换BufferedImagesjavafx.ImageView.

有没有办法在 JavaFX 应用程序中显示 SVG 图像?或者您至少可以从 JavaFX 导出 SVG 图像吗?该功能Node.snapshot()对那里有任何帮助吗?

0 投票
1 回答
1910 浏览

java - 如何将 dojox.charting.Chart 转换为 PNG 图像供用户导出?

DOJO 正在开发的我的项目中有一个新要求,即用户可以将图表导出为 PNG 图像。我进行了一项研究,发现了两个想法:

1,尝试在DOJO API中找到合适的方法直接导出为PNG图像(因为我与Ext JS相似,它提供了导出到图像的API方法),但是DOJO图表没有方法可以做到这一点。

使用 dojox.fx 或 dojox.gfx 等 DOJO API 绘制图像,但这些无法生成图像。所以我放弃了这条路。

2、使用第三方插件实现。首先,我可以通过 'dojox.gfx.utils.toSvg(chart.surface).then' 方法获取图表的表面内容,然后使用 Apache 的插件 Batik 将 SVG 内容转换为 PNG 图像。以下是我的尝试代码:

并且 doExportChart 方法执行以下操作:

SVG sample.svg 的内容如下:

然后运行上面的代码遇到错误:

我按照http://xmlgraphics.apache.org/batik/using/transcoder.html的官方示例做第二个解决方案。我不知道,希望有人能给我指导。非常感谢。

0 投票
0 回答
385 浏览

java - 通过 Batik 对更新的图像进行转码时的问题

我一直在为一个命令行程序编写一个 GUI 包装器(在 Java 中),该程序在一个文件名下生成 SVG 图像。

不幸的是,底层程序在生成新图像时无法关闭 svg 标签,所以我使用 FileWriter 来修改文件:

Batik 完美地转码了第一张图像,但第二张图像由于缺少 svg 标签而失败。

我已手动检查以验证 FileWriter 是否两次都在更新文件,确实如此。

下面是我的转码器代码(带有输入文件和 newFileName):

每次生成更新的 SVG 图像时,都会实例化一个新的转码器对象并运行上述方法。

始终生成图像并在转码器运行之前添加结束标记,所以我不知道为什么转码器似乎没有读取更新的文件。我也试过暂停线程几秒钟,没有任何改进。

任何建议,将不胜感激。

0 投票
1 回答
309 浏览

java - 在 Java 中缩放时查看 SVG 文件的像素

我正在使用 Batik 库处理 Java 中的 SVG 文件。当我缩放它时会出现问题。我可以看到线条的像素。当然这不应该发生,我应该能够至少缩放 4000% 并保持平滑度。

SVG 文件是从扩展类中读取的,并且是通过覆盖绘制方法绘制的。首先,我将新比例设置为 AffineTransform 变量,将其应用于方法的图形并使用 super.paint() 进行绘制。

我真的被卡住了,无法弄清楚问题所在。我使用的 SVG 文件没问题,我在 Inkscape 中打开它们并且可以在不显示像素的情况下进行缩放。请帮忙。

代码:

0 投票
1 回答
883 浏览

java - 在java中将svg转换为pdf时更改字体

我有一个用于将 svg 转换为 pdf 的 java 程序。在那个 svg 文件中,我给了 Myriad Pro Light 作为样式,在转换为 pdf 之后,字体又出现了别的东西。谁能建议我如何以编程方式配置字体样式。

0 投票
2 回答
634 浏览

java - 在 Java 中找不到异常的来源

基本上是抛出异常,我找不到原因。这是我在控制台上得到的:

它显然来自我用来绘制 SVG 文件的蜡染库,但我确保在文件加载、准备好并在屏幕上显示之前没有绘制任何内容。抛出时没有任何东西被绘制。

另一个有趣的事情是投掷的时机。我找不到任何合乎逻辑的模式,因为有时它会在我开始上课时立即抛出,有时需要超过五分钟。除此之外,据我测试,没有一个单独的动作调用 repaint() 来触发它,或者更确切地说是所有动作。

我是 Java 新手,所有其他异常都有抛出它们的类和行号,所以我不知道该怎么做。

任何建议将不胜感激。

代码是巨大的,所以我会只放paint方法,如果需要任何额外的东西,请说出来。

编辑:我的班级没有数组,所以我无法检查任何索引。我认为这个异常是从我使用的库中抛出的,但它是一个 .jar 文件,我不知道如何打开它或者我是否可以打开它。

0 投票
2 回答
2908 浏览

java - 如何调用 batik-rasterizer.jar

从 1.7 版开始使用batik-rasterizer.jarbatik,我想知道如何正确调用 jar。

这给了我:

因此,我一直在寻找正确的MainClassClassPath使用。我会在一分钟内发布一个我想出的脚本作为答案......

0 投票
0 回答
507 浏览

coldfusion - 无法通过 Coldfusion 将 SVG 变量传递到 Batik 转码器

在从 SQL 表中获取 SVG 代码并将其传递到 Batik 以对其进行转码(显示 PNG)之间存在一些我不明白的事情。

如果我运行下面的 CF 代码,我会收到错误:无法显示图像,因为它包含错误。这是其中任何一个产生的唯一错误。

我还使用返回 true 的 isXML() 测试了表中的值。

但如果我:

  1. 取消注释第 1 节,
  2. 复制 CFDUMP 生成的 SVG 代码,
  3. 在第 2 节中将该 SVG 代码粘贴回 CFSET 中,
  4. 并重新注释掉评论部分 1

然后 PNG 按预期显示在浏览器中。在 CFDUMP 中显示 SVG 代码,然后手动将其粘贴到代码中以某种方式(神秘地)使用它的过程会改变它,因此它可以工作......

我尝试了各种变化。当它在 CFDUMP 中显示 SVG 代码时,ColdFusion 似乎在做一些我不理解的事情(或者可能是 SQL 的某种字符集问题?)。

有人知道这可能是什么吗?我受阻了。

0 投票
0 回答
324 浏览

jquery - 无法使用从数据库中检索到的 SVG(UTF-8 错误)

当我尝试在 Batik 转码中使用从 SQL 表中检索到的 SVG 代码时,出现错误“3 字节 UTF-8 序列的无效字节 2”。

由 jQuery 从 DOM 中提取的 svg 绘图,并通过 jQuery Ajax 发送到 cfc,在那里它被更新为 SQL 表。在另一个单独的页面上,从表中查询了 SVG 代码,我尝试使用 Batik 将其转码为 PNG 文件。那时我收到了 Invalid UTF-8 Sequence 错误。

保存数据的代码:

来自 CFC 的代码,其中 SVG 代码保存到表中:

从表中检索 SVG 并用于转码为 PNG 的代码:

注意:相反,我尝试将 svg 发送到操作页面,在该操作页面中将其更新到表中,立即从该表中检索它,然后对其进行转码,这样可以正常工作。所以在我看来,在通过 ajax 发送或从表中更新/检索时,我必须对字符集做错了什么。如果可以的话请帮忙...

我已经把它缩小了一些。当我将 svg 直接输入到表中时,第三部分工作正常......所以它一定是在 ajax 调用中发送数据的方式有问题,其中 svg 被发送到 cfc 以存储在表中.

0 投票
3 回答
800 浏览

jquery - jQuery ajax 似乎改变了发送到coldfusion服务器的SVG数据

我正在使用 $.ajax() 将字符串发送到存储在表中的冷融合服务器。当我稍后查询并尝试使用该数据时,我得到一个错误;“空封闭异常:3 字节 UTF-8 序列的字节 2 无效”。

首先,我从 DOM 中获取 SVG 并将其发送到操作页面。它应该只是一个字符串,对吧?

在 myAction.cfm 页面上,我将数据更新到一个表中。

SVG2PNG.cfm:当我尝试查询和使用 svg 数据时,我收到错误“3 字节 UTF-8 序列的字节 2 无效”。错误发生在 .transcode 行。

我已经多次使用 jQuery 的 ajax 方法,没有太大的困难。我在这里做错了什么,我似乎无法处理它......