問題タブ [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 投票する
4 に答える
3028 参照

java - batik:Linux(Xサーバーなし)でsvgからpdfへ

SVGをPDFに変換するアプローチと同様に 、svg2pdf変換はウィンドウで正常に実行され、結果のpdfでテキストアイテムを検索できます。Linux(Ubuntu)でもpdf(-Djava.awt.headless = trueを使用してX11ウィンドウサーバーの欠落による例外を回避)を生成しますが、テキストアイテムは検索できず、画像としてコード化されることもあります。

LinuxでもPDF形式のテキストを保存することは可能ですか?いくつかのランタイムオプションがありませんか?

UPD:特定のフォントが見つからなかった場合、どういうわけかbatik(SVGGraphics2DまたはSVGConverter)をデフォルトのフォントにフォールバックさせることはできますか?

0 投票する
1 に答える
2289 参照

java - DOMが変更された後にSVGwithBatikを更新/表示するにはどうすればよいですか?

私はここのガイドラインに従いました:http://xmlgraphics.apache.org/batik/faq.htmlそして彼らのメーリングリストのページを読み通しました。私は考えられるすべてを試しました。これが私が達成しようとしていることの非常に簡単な例です。レイアウトマネージャーは次のとおりです。http://java.sun.com/products/jfc/tsc/articles/tablelayout/または、gridbagなどを使用できます。XmlHelperは社内ライブラリであり、独自のライブラリに置き換えることができます。コードサイズを削減するために含まれていません。

基本的に、「上へ」ボタン(更新の略)を押すと、DOMが変更され、新しい要素が追加されますが、SVGの更新は表示されません。

..

オリジナルのSVG(AIで作成され、テキスト要素を除くすべてのコンテンツを編集しました):

上記のコードにはファイルへの書き込みは含まれていません-スペースを除外しました。UPボタンを押してファイルに書き込んだ後のSVG(名前空間を確認するため)。「UP」ボタンを押した後にファイルに書き込むと、これが生成されます-これは私には完璧に見えます。

助けてくれてありがとう。ああ、研究を奨励するために、そして人々が彼らの答えに時間を割いているので、私はおそらく答えを与える前に約24時間待つでしょう。したがって、時間をかけて、必要に応じてコードを実行してください。

0 投票する
0 に答える
591 参照

java - Batikを使用してSVG画像に単純な線を描く方法は?

SVG 画像があり、この画像の座標に基づいて単純な線を描画したいと考えています。これを行うために Java で Batik を使用したいのですが、方法がわからず、十分なドキュメントが見つかりません。誰かが私を助けることができますか?

また、これを実現できる他の Java ライブラリをご存知でしたら、お知らせください。

0 投票する
1 に答える
815 参照

java - Batik - 3 次スプラインの境界の計算

Batik を使用して SVG 画像を操作しています。具体的には、多数の形状を持つシーンがあり、各形状を個別の BufferedImage に変換できる必要があります。これを行うには、次のコードを使用します。

これはかなり標準的です。Batik を起動し、SVG ファイルを解析します。ノードを画像に変換する関数は次のとおりです。

これは、長方形と直線形状ではうまく機能しますが、スプラインでは機能しません。スプラインの場合、境界はレンダリングされたスプラインよりも大きくなります。これは、getBounds 関数が境界計算に制御点を含めているためだと思います。スプラインだけの境界を見つける必要があります。つまり、スプラインがストロークされた場合、そのストロークの境界を見つけたいと思います。すべての getBounds() 関数 (getSensativeBounds、getGeometryBounds...) を試しましたが、すべて同じ結果が得られました。それで、私は何かを逃したのではないかと思っていますか?これはBatikのバグですか?または回避策がある場合は?

私が考えた回避策は、形状の頂点のリストを取得し、境界を手動で計算することです。ただし、アウトライン頂点のリストを取得する方法を見つけることができませんでした。

どんな助けでも大歓迎です。

0 投票する
1 に答える
517 参照

svg - svgパスに沿って特定のパーセンテージでオブジェクトを配置しますか?

現在、この<animateMotion>要素を使用して、オブジェクト(パスで定義)を正しい終了位置にすばやくアニメーション化しています。これはChromeで正常に表示されており、Batikで動作させるように取り組んでいません。

しかし、私は興味があります:アニメートせずにこれを行うためのより良い方法はありますか?<path>?の長さに沿って(たとえば80%で)描画するだけです。

0 投票する
0 に答える
291 参照

java - パスに沿ってSVG要素をアニメーション化するときのバティックエラー

NullPointerExceptionが発生します(Batikによってキャッチされ、「エラー:nはパスに沿って要素をアニメーション化しようとします。パスの長さが-0.3 *であるため、作成されていないPoint2Dまで追跡しました。これは負のタイムステップが原因で発生します。

これは私のコントロールの範囲内にあるのだろうか?誰かがXMLを見て、私が混乱したかどうかを確認できますか?

一部のパスを簡略化しましたが、パスに沿って特定の割合までアニメーション化してからフリーズさせようとしています。

0 投票する
1 に答える
1748 参照

java - JSVGScrollPane内のJSVGCanvasをSVGDocumentサイズと一致させます

ダイアグラム作成アプリケーションでSVG図面を表示する際に問題が発生しました。キャンバスは、含まれているドキュメントではなく、親コンポーネントのサイズを取ります。このサイズより大きいドキュメントは完全にはレンダリングされません。

場合

たとえば、621x621ピクセルの図面があります。

動的に作成されるため、viewBoxはありません。ドキュメントを作成しているとき、サイズがありません。

JSVGCanvas内部にJSVGScrollPane、スクロールペインの親がドキュメントよりも小さい、たとえば500x500ピクセルがあります。

期待される動作

アプリケーションを起動すると、500x500に収まる図面の部分が表示されます。基になるドキュメントが大きいので、121px左下にスクロールできるスクロールバーがあります。

フレームのサイズを大きくすると、より多くの図面が表示されます。620x620pxより大きくすると、スクロールバーが完全に消えることがあります。

パネルをドキュメントよりも小さくすると、スクロールバーが再び表示されます。

遭遇した行動

アプリケーションを起動すると、500x500に収まる図面の部分が表示されます。スクロールバーは表示されません。

パネルを大きくすると、キャンバス(背景色)は大きくなりますが、描画は最初の500x500pxの外側の部分には拡張されません。

パネルを小さくすると、たとえば400x400の場合、スクロールバーは表示されますが、100pxしかスクロールできません。したがって、キャンバスは、目的の621x621ではなく、最初の500x500のままです。

ScrollExample発生した動作は、Batikリポジトリと上記で追加したSVGファイルで再現できます。この例では、500x500pxの固定サイズを使用しています。

キャンバスとスクロールペインに背景色を追加すると、フレーム全体が青色になります。したがって、キャンバスのサイズは大きくなりますが、初期サイズを超えるものは描画されません。

パネルのサイズを変更すると、ドキュメントをリセットできました。これにより、図面の表示部分が再描画されますが、キャンバスはドキュメントのサイズではなく表示部分のサイズのままであるため、スクロールは期待どおりに機能しません。このリスナーをフレーム(または私が推測する他のパネル)に追加することで、これをテストできます。

viewBoxが必要であることを読みましたが、ドキュメントは頻繁に再作成され(modelchange-eventに基づいて)、ドキュメントを作成しているときに、viewBoxを取得する方法がわかりません。SVGDocument.getRootElement().getBBox();通常私に与えますnull。viewBoxが指定されていない場合、Batikコードにフォールバックがあるはずなので、これがオプションであることを願っています。また、どこかでパンした場合、ドキュメントを変更してもこのパンを維持する必要があります。

問題を明確にしたいと思います。JSVGクラスの多くが、箱から出して希望の動作を提供することを期待しているのでしょうか、それともここで何かが足りないのでしょうか。誰かが私を解決策に導いてくれませんか?

0 投票する
1 に答える
293 参照

java - Batik 1.7 でヘッドレス モードの例外が発生する: NoClassDefFoundError: gnu/java/awt/peer/headless/HeadlessToolkit

私は transcoder.so で Batik-1.7 を実装しています:

エラー: java.lang.NoClassDefFoundError: gnu/java/awt/peer/headless/HeadlessToolkit

ヘッドレスモードでトランスコーダーを使用する方法を誰か教えてください...

ありがとう、

0 投票する
1 に答える
344 参照

ant - Batik-rasterizer のインストール後に Saxon が動作しなくなる

誰かが次の問題で私を助けてくれませんか?

昨日、Batik の rasterizertask を使用して SVG のディレクトリを PDF に変換するプロセスを ANT スクリプト (Windows XP、ANT バージョン 1.8.2、ほとんどが XSLT 2.0、Saxon 9 は単に私の ant/lib に追加されたもの) に追加しようとしていました。最初は、ANT にラスタライザー タスクを認識させるのに苦労しましたが、ソースから Batik を再インストールし、次のリンクを使用して、ANT を機能させることができました。

https://mail-archives.apache.org/mod_mbox/xmlgraphics-batik-users/200605.mbox/%3C445B43B9.4010403@harcotechnology.com%3E

これらの指示にはそうするように記載されていませんでしたが、rasterizertask.jar を再コンパイル/再構築する必要があることがわかりました。

補足として、Batik の公式サイトで推奨されているように、batik-rasterizer.jar クラスと rasterizertask クラスへのパスを CLASSPATH に既に追加していました。

ほら、ラスタライザーのタスクが機能していました。残念ながら、ANT スクリプトの rasterizertask に続くすべての XSLT 2.0 タスクが機能しなくなりました。私が知る限り、私が行ったことが原因で、デフォルトの XSLT プロセッサーが Xalan-j に変更されました。また、Xalan は私の XSLT の多くをサポートしていません。

たとえば、これは Xalan から得られるエラーです (このエラーが発生する理由はわかっています。これが、Saxon を使用する理由です)。

そして、私が見つけて ANT に強制的に Saxon を使用させようとした (つまり、Saxon を CLASSPATH、xslt/factory に追加した) すべての方法で、Xalan ではなく、Saxon が呼び出されるようになりましたが、次のエラーが発生しました。

したがって、Xalan に処理を任せても、ラスタライザー タスクは機能しますが、以前に機能していた XSLT は機能せず、Saxon を使用すると何も機能しません。ANT 1.8.4 をインストールしようとしましたが、同じ結果が得られます。

このサイトの同様の投稿を含め、見つけたすべてのリソースを使い果たしましたが、すべての解決策は私がすでに試したことを示しているようです.

うまくいけば、これは誰かが私にアドバイスや支援を与えるのに十分な情報です.

ありがとう、キース