2013-12-08 29 views
31

私はjsPDFを使いこなすのは初めてですが、私の人生にとってはこの事に適用するCSSを手に入れることはできません!私はインライン、内部、外部をすべて無駄にしようとしました!私はそれが技術的に印刷物をファイルに印刷しているので、印刷スタイルシートが必要で、それもうまくいきませんでした。jsPDFはどんなスタイリングでも動作しません

私はちょうどで動作するように任意のCSSを取得しようとしている非常に基本的なページがあります。 JS:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
<script type="text/javascript" src="jspdf.js"></script> 
<script type="text/javascript" src="./libs/FileSaver.js/FileSaver.js"></script> 
<script type="text/javascript" src="./libs/Blob.js/BlobBuilder.js"></script> 
<script type="text/javascript" src="jspdf.plugin.standard_fonts_metrics.js"></script> 
<script type="text/javascript" src="jspdf.plugin.split_text_to_size.js"></script>    
<script type="text/javascript" src="jspdf.plugin.from_html.js"></script> 
<script> 
    $(document).ready(function(){ 
     $('#dl').click(function(){ 
     var specialElementHandlers = { 
      '#editor': function(element, renderer){ 
       return true; 
      } 
     }; 
     var doc = new jsPDF('landscape'); 
     doc.fromHTML($('body').get(0), 15, 15, {'width': 170, 'elementHandlers': specialElementHandlers}); 
     doc.output('save'); 
     }); 
    }); 
</script> 

はHTML:

<body> 
    <div id="dl">Download Maybe?</div> 
    <div id="testcase"> 
     <h1> 
      We support special element handlers. Register them with jQuery-style 
     </h1> 
    </div> 
</body> 

そして最後に外部にあるスタイルシートを:

h1{ 
    color: red; 
} 
div{ 
    color: red; 
} 

すべてが正しく組み込まれていることと、n oエラーは、すでにすべてをチェックしています。 CSSがうまく動作するためには、私が呼び出す必要があるいくつかの余分な機能がありますか?私に教えてください!どうもありがとう!あなたが持っているかもしれない他のヒントも高く評価されています!

EDIT:

<html> 
    <head> 
     <link rel="stylesheet" href="print.css" type="text/css" media="print"/> 
     <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
     <script type="text/javascript" src="jspdf.js"></script> 
     <script type="text/javascript" src="./libs/FileSaver.js/FileSaver.js"></script> 
     <script type="text/javascript" src="./libs/Blob.js/BlobBuilder.js"></script> 
     <script type="text/javascript" src="jspdf.plugin.standard_fonts_metrics.js"></script> 
     <script type="text/javascript" src="jspdf.plugin.split_text_to_size.js"></script>    
     <script type="text/javascript" src="jspdf.plugin.from_html.js"></script> 
     <script> 
      $(document).ready(function(){ 
       $('#dl').click(function(){ 
       var specialElementHandlers = { 
        '#editor': function(element, renderer){ 
         return true; 
        } 
       }; 
       var doc = new jsPDF('landscape'); 
       doc.fromHTML($('body').get(0), 15, 15, {'width': 170, 'elementHandlers': specialElementHandlers}); 
       doc.output('save'); 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <div id="dl">Download Maybe?</div> 
     <div id="testcase"> 
      <h1> 
       We support special element handlers. Register them with jQuery-style 
      </h1> 
     </div> 
    </body> 
</html> 
+0

コンソールに何かエラーがありますか?つまり - すべてのリソースが正しく読み込まれていますか? 。 私が尋ねる理由は、私の開発環境では、「//ajax.googleapis.com」が「h t t p://ajax.googleapis.com」の問題を引き起こしているからです。その点:開発スタックについてもっと教えてください。どのようにページはWAMP、MAMP、RoRails、Nodeにレンダリングされていますか?これが重要であるかどうかは分かりませんが、誰が知っていますか? – sdailey

+0

すべてがロードされています。単純な.htmlファイルです。 – samuraiseoul

+0

私はあなたのコードをすべて必要と思っていますか、それともどこかにアップロードできますか?なぜなら、私がコードを使用すると、あなたはスタイリングを提供してもうまく動作するからです。 – Jarno

答えて

16

私は問題があなたの代わりに media="screen"media="print"を使用することだと思う: これは、正確なWebページです。ブラウザで見られるように、ページのスタイリングが含まれています

<link rel="stylesheet" href="print.css" type="text/css" media="print"/> 
<link rel="stylesheet" href="screen.css" type="text/css" media="screen"/> 

画面1:2つの別々のファイル、印刷用と画面のための1つを作ってみましょう 。印刷したものには、ページを印刷するときのスタイルや、この場合はPDFとして保存するスタイルが含まれます。

EDIT

私はjsPDF websiteをチェックするが、私は、彼らはCSSをサポートしていないと思います。あなたはしかし別のテキストの色で文書を作成するには、このような何かを行うことができます:

doc.setFontSize(22); 
doc.setTextColor(255, 0, 0); 
doc.text(20, 20, 'This is a title'); 

doc.setFontSize(16); 
doc.setTextColor(0, 255, 0); 
doc.text(20, 30, 'This is some normal sized text underneath.'); 

をスクリプトで右var doc = new jsPDF('landscape');の下にこのコードを入れてください。

+0

私はこれを試してみましたが、通常はページのスタイルを設定していますが、pdf形式で保存するとPDF形式にすることはできません。 : – samuraiseoul

+0

私は彼らがCSSをサポートしていないと思っています。私の更新された答えを確認してください。 – Jarno

+8

CSSDFを適用できない場合、JSPDFは役に立たなくなります。 DOM?ImageまたはPDF?idによってDOMのサブ要素を取得できる場合、形式はあまり重要ではありません! – samuraiseoul

0

jsPDFでスクリーンショットをキャプチャできますが、html2canvasも必要です。 html2canvasを使用してhtmlをキャンバスに変換し、画像コンテンツを取得します。 jsPDFで空のPDFファイルを作成し、PDFにHTML形式の画像コンテンツを追加して保存します。

html2canvas(*html*, { 
    onrendered: function(canvas) { 
    const contentDataURL = canvas.toDataURL('image/png') 
    let pdf = new jsPDF() 
    pdf.addImage(contentDataURL, 'JPEG', 20, 20) 
    pdf.save('form.pdf') 
    } 
}) 

これは、すべてのCSSを保持しますが、品質には(ぼやけ)少し低下します。

0

あなたはそのREADMEからthis jsPDFを使用するオプション、html2canvasとHTML2PDFライブラリ

を試すことができます。

<script src="jspdf.min.js"></script> 
<script src="html2canvas.min.js"></script> 
<script src="html2pdf.js"></script> 

、その後、あなたが実行してPDFファイルを生成することができます。

は、このファイルをインクルード:

html2pdf($('body').get(0), { 
    margin:  1, 
    filename:  'myfile.pdf', 
    image:  { type: 'jpeg', quality: 0.98 }, 
    html2canvas: { dpi: 192, letterRendering: true }, 
    jsPDF:  { unit: 'in', format: 'letter', orientation: 'portrait' } 
}); 
関連する問題