html - 如何使用 react-to-print 库在 react js 中制作响应式 pdf?
问题描述
[demo][1]
[1]: https://codesandbox.io/s/react-to-print-rzdhd
我正在使用 react-to-print 库从 html 生成 pdf。但问题是,当我尝试在我的手机(小屏幕尺寸)中生成 pdf 时,它对我不起作用,但它适用于桌面(大屏幕尺寸)视图。
解决方案
此软件包使用window.print()
,它不适用于移动设备。您可以使用以下解决方法:
class Example extends React.Component {
printPDF(e) {
return new Promise((resolve: any) => {
e.preventDefault()
var ua = navigator.userAgent.toLowerCase()
var isAndroid = ua.indexOf('android') > -1 //&& ua.indexOf("mobile");
if (isAndroid) {
// https://developers.google.com/cloud-print/docs/gadget
var gadget = new cloudprint.Gadget()
gadget.openPrintDialog()
} else {
window.print()
}
resolve(true)
})
}
render() {
return (
<div>
<ReactToPrint
trigger={() => <button>Print this out!</button>}
print={e => this.printPDF(e)} // HANDLE PRINT FUNCTION
content={() => this.componentRef}
/>
<ComponentToPrint ref={el => (this.componentRef = el)} />
</div>
)
}
}
推荐阅读
- c# - C# txt 包含 X 而不是 txt 的行包含 X
- python - 在 Python 包中查找数据文件 - setup.py 的 package_data={...} 可能已损坏?
- r - 重申 R 中的嵌套 ifelse 语句
- android - fromHtml 不能识别多个空格,如何解决?
- npm - 在“create-react-app”之后“npm start”将不起作用
- python - ValueError:太多维度'str'python pytorch
- mysql - laravel如何设置主键起始值?
- salesforce - Appval Process Salesforce 的测试类
- f# - 未找到 plotly.net 图表
- laravel - Laravel Livewire:访问和操作哈希 URI