reactjs - 从 HTML 文本 React 创建 PDF 文件

标签 reactjs reactive-programming

我是react-redux的初学者。

我尝试创建一个函数,例如使用 Javascript 将 html 文本导出为 pdf,并且它适用于 html,但是当我将其应用于 React 组件时,它不起作用。

这是我的代码:

import React from 'react';

class App extends React.Component {
  constructor(props){
    super(props);
    this.pdfToHTML=this.pdfToHTML.bind(this);
  }

  pdfToHTML(){
    var pdf = new jsPDF('p', 'pt', 'letter');
    var source = $('#HTMLtoPDF')[0];
    var specialElementHandlers = {
      '#bypassme': function(element, renderer) {
        return true
      }
    };

    var margins = {
      top: 50,
      left: 60,
      width: 545
    };

    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('html2pdf.pdf');
      }
    )
  }

  render() {
    return (
      <div>
        <div classID="HTMLtoPDF">
          <center>
            <h2>HTML to PDF</h2>
           <p>Lorem ipsum dolor sit amet, consectetur adipisicing </p>
          </center>
        </div>
        <button onClick={this.pdfToHTML}>Download PDF</button>
      </div>
    );
  } 
}

export default App;

Javascript 与 HTML:https://www.youtube.com/watch?v=HVuHr-Q7HEs

最佳答案

React 在 html 标签中没有“classID”属性,它作为 props 传递给 div,永远不会被解析。 className 之所以被实现,是因为它是 JS 中的保留字,也许您只需将“classID”替换为“id”属性即可工作

P.s.当您需要的只是 DOM 操作时,JQuery 是一种不好的做法。 javascript 有 document.getElementById() 并且不需要依赖

P.p.s。给您的小提示是“pdfToHTML(){}”可以替换为 lambda,如“pdfToHTML = () => {}”,并且您的函数将从类实例中获取“this”,绑定(bind)将被删除,构造函数将变得无用.

关于reactjs - 从 HTML 文本 React 创建 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41529149/

相关文章:

javascript - 在 React 中渲染来自 API 的 html 响应

r - 非发光上下文中的响应式(Reactive)对象绑定(bind)

javascript - RxJS - 收集异步操作结果

java - 如何在仅使用单个线程的情况下在 RxJava 中递归?

java - Reactive 和 Reactive Streams 有什么区别?

swift - ReactiveSwift 从数组中发射元素,元素之间有延迟

javascript - React-Select Creatable hide only create new.. 消息

reactjs - create-react-app 中的 public/manifest.json 文件是什么?

javascript - 在 Firebase 中使用 push() 如何获取唯一 ID 并存储在我的数据库中

javascript - 无法读取 null 的属性 'innerHTML'