2017-11-24 19 views
7

ファブリックjを使用して1つのキャンバスを作成しました。今私はスケーラブルな/印刷可能なイメージ(SVG & PNG)を作成するために苦労している。ファブリックjsのtoSVGデータを使用してサーバー側(PHP)にSVGとPNGイメージを作成する方法

toSVGファブリックjSのデータを使用して、サーバー側でSVGおよびPNGイメージを作成する方法をいくつか試しています。だから、そのユーザーはそのSVGを使ってそのカードを印刷することができます。

(すべてのリンクは、私は、適切な方法を見つけるように求めてきたSOの私の質問に参照のうえされているの下に)私はオプションの下に試してみました


1)Generate SVG on php side using Canvas JSON
ありません成功
2)Using raw svg data generate png on server side
部分的な成功:ワードラッピング、フォントの問題などのような問題に直面しています。また、印刷可能なイメージを取得できません。 (DPIは、問題が添付SSのように表示され、より高い使用している場合)SSの下にチェック:

enter image description here

3)Generate Printable PDF using SVG raw data
部分:印刷可能なPDF

4)generate svg using raw data of svg in imagick
を取得することができません成功しません。:svgイメージを作成できません(BG問題、イメージ問題)。

5)直接生データ

を使用してSVGを作成
$file_name = uniqid($prefix).".svg"; 
$file_handle = fopen("$folder_name/".$file_name, 'w'); 
fwrite($file_handle, $raw_svg); 
fclose($file_handle); 

NO成功:フォントがロードされていない、スケーラブルではありません(印刷可能な品質)

は、だから私の質問はする最良の方法は何かということです意味SVG & BGイメージ、アップロードされたイメージ、差分をレンダリングするPNGを作成します。フォントなどの印刷可能な品質。

注:私がSVGに焦点を当てているのは、クライアントがPNG内で印刷可能な品質を得ることができるのであれば、動作するかもしれないからです。また、SVGをPNGに変換するためにimagickを使用しました。しかし、印刷可能な品質を得ることができません(上のSSのような高いDPI問題が発生します)。

+0

私はすべての私の研究と私がこれまでに試したことを含めようとしました。だから何か他の選択肢があれば教えてください。 imagemagickや他の方法のような代替。だから私は私の希望の出力を達成することができます。 – DS9

+1

SVGの機能についてはわかりませんが、サーバー上でPhantomJSを使用することができます。基本的に、ユーザーのブラウザと同じようにレンダリングできるヘッドレスWebKitブラウザです。そしてそれをイメージ(PNG)とPDFにレンダリングすることができます。独自のJSコードを実行することもでき、さらに多くの可能性が開かれます。多分それはオプションですか? shell_execなどを使用してPHPに統合することもできます。 – matths

+1

実際のtoSVGデータにはどのような問題がありますか?実際のSVGです。 SVGをPNGに変換するにはimagemagickは良くありませんか? – AndreaBogazzi

答えて

1

IMHOをレンダリングする最も信頼できる方法は、wkhtmltopdfを使用して、さまざまなフォントを使用して、入力可能なWebコンテンツから印刷可能な品質のPDFファイルを生成することを検討します。

バイナリをコピーしてサーバーに貼り付けることでインストールできます。

これはあらかじめコンパイルされており、一般的なディストリビューションのバイナリをダウンロードします。これは、ブラウザにインストールすることができます

、この例を参照してください。

あなたはこのように、パススルー使用してPHPからwkhtmltopdfを呼び出すことができます。

echo("<pre>"); 
passthru("/full/path/to/your/wkhtmltopdf input_html_with_svg_inside.html output.pdf 1>&2"); 
echo("</pre>"); 

後で、変換するために、ImageMagickのパッケージからconvertを使用することができますそれはたとえば透明なpngに。

また、サーバーにフォントをインストールすると、必ずしもすべてのフォントが正しいとは限りませんが、無料でインストールできるオンラインフォントパッケージを見つけることができます。 wkhtmltopngもあります。

HTH。

関連する問題