wojtekmaj / react-pdf

Display PDFs in your React app as easily as if they were images.
https://projects.wojtekmaj.pl/react-pdf
MIT License
9.11k stars 867 forks source link

Some iOS phones display a white screen of PDF #1674

Closed xizijian closed 2 weeks ago

xizijian commented 8 months ago

Before you start - checklist

Description

Here's a snippet: import { Document, Page } from 'react-pdf'; import { pdfjs } from 'react-pdf'; export default function() {

const [numPages, setNumPages] = useState(-1);
const width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;

return isMobile() ? (
    <Document
        className="pdf"
        file={pdfSrc}
        onLoadSuccess={({ numPages }) => {
            setNumPages(numPages);

        }}
        onLoadError={error => {
            console.error('pdf:',error);
        }}
        loading={''}
    >
        {numPages > 0
            ? new Array(numPages).fill(0).map((item, index) => {
                    return <Page loading={''} width={width} key={index} pageNumber={index + 1} />;
              })
            : ''}
    </Document>
) : (
    <iframe src={pdfSrc} width="100%" height={iframeHeight} />
);

}

Steps to reproduce

On iOS 17.1.1, the white screen is displayed and there is no error, how can I solve this situation?

Expected behavior

Display PDF normally

Actual behavior

Now it's a white screen

Additional information

WechatIMG83

src: https://m.ximalaya.com/gatekeeper/xmkp-ort-h5/xikePreviewPdf?pdfSrc=http://fdfs.xmcdn.com/storages/9e45-audiofreehighqps/47/09/GKwRIDoJKNaaABAAAAJ9HidT.pdf&lessonName=L11%20Is%20this%20your%20shirt?&businessType=11

Environment

dbielak commented 7 months ago

I faced the same issue, any thoughts about it?

wojtekmaj commented 6 months ago

Potential duplicate of #1149?

0shevchuk commented 5 months ago

I have a similar issue with usage on the iPhone 13 mini. I get just a white screen with the correct dimensions but without visible content. (The console output is clear, without any errors or warnings, so not sure that this is the duplicate of https://github.com/wojtekmaj/react-pdf/issues/1149)

React-PDF version:7.1.2 React version: 16.13.1

On iPhones with larger screens or Androids, works great.

melisaltunal commented 4 months ago

I have a similar problem. I use react-pdf in my project. While it works smoothly on Android devices, the project does not open directly on iOS devices and a white screen appears. This problem occurs especially in iOS 17.x.x.

I cant specify a specific phone model, but this problem is mostly experienced with new model iOS phones. Interestingly, this is not the case every time; another user using the same phone model and the same iOS version can view the PDF.

Environment: React-PDF version: "^5.7.2", React version: "^17.0.0", Webpack version: "^5.75.0"

white screen This link is opened using webview in a mobile application.

wojtekmaj commented 4 months ago

Please check #1149 and also check for any errors in callbacks React-PDF offers.

melisaltunal commented 4 months ago

Thanks for the quick response :) But if the problem was as you say, all iOS devices of the same model would have similar problems, right? But in my case, sometimes this problem occurs and sometimes it does not. And since it's on the client device I can't catch the error. This problem has never occurred on the web browser or Android. Could it be related to Webpack? or JavaScript heap out of memory error?

nedkamburov commented 4 months ago

I managed to fix this by just adding devicePixelRatio={1} to the Page component. This is set to 1 by default but this seems to fix it.

<Page
    pageIndex={0}
    width={2000}
    renderAnnotationLayer={false}
    renderTextLayer={false}
    devicePixelRatio={1}
 />
melisaltunal commented 4 months ago

<Page pageNumber={page} width={window?.innerWidth} height={window?.innerHeight} pageIndex={0} renderAnnotationLayer={false} renderTextLayer={false} />

My page component is here. I can't use devicePixelRatio, maybe because I'm using react-pdf 5.7.2. Actually, when I click on the checkbox in the project, I open my PDFs in a pop-up. But the white screen is taken while the project is being rendered. I can't even see the checkbox.

focusaway commented 4 months ago

@melisaltunal Looks like I just solved it easily. try changing the "renderMode" to svg in the Document. Works on version 5.7.2 and 6.2.2

wojtekmaj commented 4 months ago

@focusaway SVG render mode is deprecated, and will be removed in a future version.

github-actions[bot] commented 4 weeks ago

This issue is stale because it has been open 90 days with no activity. Remove stale label or comment or this issue will be closed in 14 days.

github-actions[bot] commented 2 weeks ago

This issue was closed because it has been stalled for 14 days with no activity.