2016-08-25 7 views
0

私はjsPDFを使用してHTMLのコードをpdfに出力しています。jsPDFの問題、整列と要素、.text()

これは私の関数である:

function demoFromHTML() { 
    var pdf = new jsPDF('p', 'pt', 'A4'); 
    // source can be HTML-formatted string, or a reference 
    // to an actual DOM element from which the text will be scraped. 
    //source = $('.conteudo_simulacao_final')[0]; 
    pdf.setFontSize(40); 
    pdf.text(250, 220, 'World test!'); 

    source = '<h1><img src="jsPDF/header.jpg" alt="header" style="width:595.28px; top:0; left: 0;" ></h1>'; 
    source += '<div style="width:400px; >' 
    source += '<div style="float: left;"><img src="jsPDF/cartao_img.png" style="width:300px;" alt="cartao"></div>' 
    source += '<div style="float: left;"> TESTSASSAE</div>'; 
    source += '</div>': 
    source += '<img src="jsPDF/footer.png" alt="footer" style="width:595.28; bot: 0;" ></h1>'; 

    // we support special element handlers. Register them with jQuery-style 
    // ID selector for either ID or node name. ("#iAmID", "div", "span" etc.) 
    // There is no support for any other type of selectors 
    // (class, of compound) at this time. 
    specialElementHandlers = { 
     // element with id of "bypass" - jQuery style selector 
     '#bypassme': function (element, renderer) { 
      // true = "handled elsewhere, bypass text extraction" 
      return true 
     } 
    }; 
    margins = { 
     top: 0, 
     bot: 0, 
     left: 0, 
     width: 522 
    } 

    // all coords and widths are in jsPDF instance's declared units 
    // 'inches' in this case 
    pdf.fromHTML(
    source, // HTML string or DOM elem ref. 
    margins.left, // x coord 
    margins.top, { // y coord 
     'width': margins.width, // max width of content on PDF 
     'elementHandlers': specialElementHandlers 
    }, 

    function (dispose) { 
     // dispose: object with X, Y of the last line add to the PDF 
     //   this allow the insertion of new lines after html 
     pdf.save('Test.pdf'); 
    }, margins); 
} 

私はPDFファイルを作成することができ、私の問題は次のとおりです。 私は側で2つのdiv要素の側を印刷することはできません。私はjsPDFスタイルを読むことができない、これを回避する方法は?

私がこれを行うとき、私の他の問題は、 'pdf.text(250、220、' World test! ');'テキストは私のイメージの背後にあります。

お世話になりました。

答えて

0

CSSがレンダリングされない問題については、これが役立つはずです:Exporting PDF with jspdf not rendering CSS

回答者はHtml2Canvasの使用をお勧めします。その後、HTML2Canvas JSを追加し、pdf.fromHTML()の代わりにpdf.addHTML()を使用することができます。

イメージがテキスト上に表示されるのは、jsPDFにページをさらに印刷するように指示していないためです。

下記を試してください。マージンを最初に設定し、指定された余白にテキストを書いてから、余白を増やして、htmlを印刷すると「World Test!テキスト。

 function demoFromHTML() { 
 
    var pdf = new jsPDF('p', 'pt', 'A4'); 
 
    // source can be HTML-formatted string, or a reference 
 
    // to an actual DOM element from which the text will be scraped. 
 
    //source = $('.conteudo_simulacao_final')[0]; 
 
    pdf.setFontSize(40); 
 
    var margins = { 
 
       top: 75, 
 
       bottom: 60, 
 
       left: 30, 
 
       width: 530 
 
      }; 
 
    pdf.text(margins.left, margins.top, 'World test!'); 
 
    margins.top = margins.top + pdf.internal.getFontSize(); 
 

 
    source = '<h1><img src="jsPDF/header.jpg" alt="header" style="width:595.28px; top:0; left: 0;" ></h1>'; 
 
    source = '<html><body><h1><img src="jsPDF/header.jpg" alt="header" style="width:595.28px; top:0; left: 0;" ></h1>'; 
 
    source += '<div style="width:400px; >' 
 
    source += '<div style="float: left;"><img src="jsPDF/cartao_img.png" style="width:300px;" alt="cartao"></div>' 
 
    source += '<div style="float: left;"> TESTSASSAE</div>'; 
 
    source += '</div>': 
 
    source += '<img src="jsPDF/footer.png" alt="footer" style="width:595.28; bot: 0;" ></h1>'; 
 

 
    // we support special element handlers. Register them with jQuery-style 
 
    // ID selector for either ID or node name. ("#iAmID", "div", "span" etc.) 
 
    // There is no support for any other type of selectors 
 
    // (class, of compound) at this time. 
 
    specialElementHandlers = { 
 
     // element with id of "bypass" - jQuery style selector 
 
     '#bypassme': function (element, renderer) { 
 
      // true = "handled elsewhere, bypass text extraction" 
 
      return true 
 
     } 
 
    }; 
 
    
 

 
    // all coords and widths are in jsPDF instance's declared units 
 
    // 'inches' in this case 
 
    pdf.fromHTML(
 
    source, // HTML string or DOM elem ref. 
 
    margins.left, // x coord 
 
    margins.top, { // y coord 
 
     'width': margins.width, // max width of content on PDF 
 
     'elementHandlers': specialElementHandlers 
 
    }, 
 

 
    function (dispose) { 
 
     // dispose: object with X, Y of the last line add to the PDF 
 
     //   this allow the insertion of new lines after html 
 
     pdf.save('Test.pdf'); 
 
    }, margins); 
 
}

+0

私は明日キャンバスをしようとします。 テキストについて私は間違っていると思った。img:z-index:0 text:z-index:1 これを行うにはどうすればよいですか? THks –

+0

ちょうどアップデート、キャンバスを試して、それは働いた;) それはすべてのCSSでページを印刷します。 ちょっとした問題がありました。私が印刷したアイテムのヘッダーは黒色で表示されました。賛美歌の中でそれが白いのはどこですか? –