私たちは、モバイルアプリケーションとしてインタラクティブなプレゼンテーションを作成するためのユニバーサルソリューションを考え出したいと思います。最初のアイデアは、PDFファイルを作成して携帯電話で使用することでしたが、うまくいかなかった - それは遅すぎました。もう一つのアイデアは、PDFをSVGに変換してシーン(スライド)として使用することでした。これが私が現在取り組んでいることです。私が言いたいことは、PDFにはページ間を移動するための内部リンク注釈が含まれていることです。重いSVGファイルをレンダリングする(パフォーマンスを改善する)
したがって、PDFからSVGへの変換では、pdf2svg cliツールを使用します。私はまた、PHPのcliアプリケーションを書いて、PDFからのすべてのリンクをその位置で解析しました。概念のために私は最初にこのアイデアをテストするためにReactJSを使用します(私はReact Nativeでこれまでに働いたことはありません)。
問題:PDFには高解像度の画像とページがたくさん含まれているため、SVGファイルのサイズが非常に大きく(最大11MB)、すべてのSVGのサイズが〜70MBです。これらの大きなSVGファイルをレンダリングすると、PDFファイルと比較して遅延があります(〜1〜10秒)ので、読み込み時間を最適化する必要があります。私がこれまで試してみました何
:私が書いた前述のPHP CLIユーティリティを使用して
は、私は、SVGファイル内のリンク(
<rect x="..." y="..." width="..." height="..." data-target-page="..." opacity="0"/>
)に関するいくつかのデータを置きます。それから私は<object data="..."/>
と状態の中のページ番号を含むSVGをレンダリングし、各レンダリングでonClick
のイベントリスナーをSVG内の<rect>
タグのために作成しました。まあ、それは最初の試みだったし、私はパフォーマンスに満足していなかった。react-svg-loader
を使用して、コンポーネントとしてSVGを注入しようとしました。それはうまくいかず、パフォーマンスはさらに悪化しました(70 MBのSVGからJSXコンポーネントへの変換は良いとは言えません)。ところで、私は生産のためのプロジェクトを作ろうとしましたが、それはずっと待っていました。したがって、オプションではありません。SVGの代わりに、より小さい解像度(各PNGは約800kb)のPNG画像を使用して、画像の上にdiv要素としてリンクを配置しようとしましたが、パフォーマンスは本当に良好でしたが、品質が低下しました。そうではありません。
SVGと
<img src="..."/>
と同じですが、3と同じです。私はそれがやや良いと思っていますが、それでも勝利はありません。
SVGを使用してもパフォーマンスを向上させるにはどうすればよいですか?それはReact Nativeでより良いか悪いか?
SVGはビットマップイメージではなくベクトルを保持します! 代わりにPDFをHTMLに変換したい場合があります。 –
複雑なSVGはレンダリング時間を長くしすぎます。したがって、複雑な図形にはSVGを使用すべきではありません(PDFにはより多くのテキスト、図形を含めることができます)。マークアップ言語を使用して、レンダリング時間をかなり遅くします。 @BorisKはHTMLを使いやすくしています。 –
私は応答性とクロスデバイスサポートが必要なので、HTMLはそうではありません。 – gintko