9

我正在尝试在我的 reactjs Web 应用程序中使用 react-pdf 将一个 pdf 页面制作为一个 base64 图像。

我已经尝试了我所知道的一切将图像制作为 A4 大小的图像并完全填充图像,以便一张图像在 react-pdf 中作为一整页出现

我试过宽度:100%,高度:100%,对象填充,试图增加尺寸。但到目前为止我没有成功。现在,图像位于中心,并没有到达页面的所有角落。


import React, { Component } from 'react'
import ReactPDF,  { Page, Text, View, Document, StyleSheet ,  Font, Image,} from '@react-pdf/renderer';
import pic from "../pics/pic.jpeg"



// Create styles
const styles = StyleSheet.create({
    page: {
      flexDirection: 'row',
      backgroundColor: '#fff',
      width:"100%",
      orientation:"portrait"
    }, 
    image: {
        width: '100%',
        height:"100%",
        padding: 10,
        backgroundColor: 'white',
      },
  });


// Create Document Component
export default class ImageToPDF extends Component {

    render() {

        return (
     <Document >

 <Page object-fit="fill" style={styles.page} size="A4">
        <View object-fit="fill" style={styles.image}>
   <Image object-fit="fill"  style={{ padding:"0, 0, 0, 0", margin:"33%, 2rem, 2rem, 2rem",

      transform: 'rotate(90deg)'}}  src={pic} alt="images" />
   </View>
      </Page>



    </Document>
        )
    }
}

预期输出:使用 react-pdf 将一张图像作为 pdf 中的一页出现。

实际结果:一张图片使用 react-pdf 出现在页面中间,并且在所有四个边上都有很多边距

非常感谢您的帮助。对此,我真的非常感激

4

1 回答 1

4

我想有点晚了,但也许可以帮助其他人。

我认为下面的代码可以解决问题。我改变了一些东西:

  1. 视图元素有填充,我删除了它。
  2. 将 objectFit 应用于图像元素,我建议使用“cover”而不是“fill”。

让我知道这是否有帮助。

import React, { Component } from 'react'
import ReactPDF, { Page, Text, View, Document, StyleSheet, Font, Image } from '@react-pdf/renderer';
import pic from "../pics/pic.jpeg"

// Create styles
const styles = StyleSheet.create({
    page: {
        flexDirection: 'row',
        backgroundColor: '#fff',
        width: '100%',
        orientation: 'portrait',
    },
    view: {
        width: '100%',
        height: '100%',
        padding: 0,
        backgroundColor: 'white',
    },
    image: {
        objectFit: 'cover',
    },
});


// Create Document Component
export default class ImageToPDF extends Component {

    render() {
        return (
            <Document >
                <Page object-fit="fill" style={styles.page} size="A4">
                    <View style={styles.view}>
                        <Image style={styles.image}  src={pic} alt="images" />
                    </View>
            </Page>
        </Document>
        );
  };
};
于 2019-10-05T13:49:42.277 回答