一些背景:
PDF 文档没有原生像素分辨率。这是因为 PDF 文档是按英寸缩放的。然后,每个 PDF 查看器确定每英寸将显示多少像素(例如 Adobe Acrobat 为 110 像素/英寸)。
我的问题:
React-PDF使用默认比例 72ppi。然而,在许多情况下,这对于舒适的阅读来说太小了。我希望有办法将默认 PPI 设置为 96。
我目前所做的:
我将每个缩放<Page/>因子,但是我担心这种缩放是在主渲染过程之后96 / 72应用的(即在像素输出上)而不是作为其中的一部分(即在源文档上)。
<Document file={url}>
<Page scale={96/72} pageNumber={1}/>
</Document>
Run Code Online (Sandbox Code Playgroud)
这可能会导致最终输出模糊。
可能的解决方案?
将文档渲染为 SVG 可能会改善最终的缩放分辨率细节。
<Page renderMode="svg"/>
Run Code Online (Sandbox Code Playgroud)
其他人有在react-pdf 中使用 PPI 的经验吗?
console.error node_modules/react-dom/cjs/react-dom.development.js:506 警告:使用不正确的大小写。对 React 组件使用 PascalCase,对 HTML 元素使用小写。
我有 Jest 和 react-pdf 的问题
我在一个新的 umi 项目中包含了react-pdf:
在 umi 项目中,每个元素都需要大约 10 倍!
我试过的代码示例
import React from "react";
import "./styles.css";
import { Document, Page, pdf, Text, View } from "@react-pdf/renderer";
export default function App() {
const pdfClickHandler = async () => {
console.time("PDF generation took:");
await pdf(
<Document>
<Page>
<View>
{Array.from(Array(150).keys()).map((key) => (
<Text key={key}>text-element</Text>
))}
</View>
</Page>
</Document>
).toBlob();
console.timeEnd("PDF generation took:");
};
return (
<div className="App">
<button …Run Code Online (Sandbox Code Playgroud) 我正在尝试从 s3 链接获取 pdf 并在 React 应用程序中显示。我正在使用react-pdf。但是当react-pdf进行api调用来获取pdf时,我收到此错误
从源“...”获取“...”的访问已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明响应满足您的需求,请将请求模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。
在 React 应用程序上我还添加了这个,
源={{ 标头: { 'Access-Control-Allow-Origin': '*', }, }}
我一直在 NextJs 应用程序中的仪表板中使用 recharts 库,并且出现了通过 PDF 下载表格和图表的新要求。
在react-pdf的github上有一个问题,由于包中新发布了SVG支持,该问题现已关闭,作者指出绑定应该单独完成,人们已经实现了这一点。
到目前为止,我已经完成了 PDF 渲染简单内容,例如文本。注意:要让react-pdf在此沙箱中工作,您可能需要在新窗口中打开它。 https://codesandbox.io/s/simple-line-chart-forked-vifo9?file=/src/App.tsx
我使用react-pdf创建了一个pdf查看器。当我显示某些 pdf 时,文本断断续续且难以阅读。我尝试过放大和缩小文档,但它在不同的比例下以不同的方式出现断断续续的情况。有时,在缩小然后放大后,文本在一定比例下甚至看起来还不错。
(1.5 比例的示例)
(1.6 比例的示例)
起初,我认为这可能是react-pdf的问题,但我发现react-pdf基本上是PDF.js的包装器。我发现我可以在PDF.js 演示页面中复制该问题。
不幸的是,我正在处理包含识别信息的 pdf,因此我无法共享完整的 pdf 或完整屏幕截图。我将尽可能多地分享。
我尝试过的
renderMode内容。这是最有用的修复,因为它确实正确渲染了文本,但随后却导致 pdf 上的图像无法加载。'svg'感谢您的帮助/建议。
如果我能找到一种方法来编辑 pdf 使其不包含敏感信息,我会尝试找到一个地方使其可用于测试。很抱歉目前无法提供该信息。我知道,当你自己无法复制时,很难给出建议。我会努力解决这个问题。
我正在使用带有“pdfjs-dist”的react-pdf-viewer 3.9.0:“2.15.349”。
看起来 React PDF Viewer 仍然等到完全下载文件,而不是在下载最低要求后立即渲染第一页(快速 Web 视图或线性化技术)。我的文件已经线性化(字节流),即使正在获取文件,我也想渲染第一页。我很想知道如何解决这个问题!谢谢你!
我正在开发一个简单的 React Web 应用程序,该应用程序可以向 IPFS 添加文件或从 IPFS 检索文件。
当文件添加到IPFS时,页面上会出现添加的文件(即医疗文件)的名称以及“查看文件”按钮。
单击该按钮时,应使用react-pdf 中的“文档”组件查看该文件[ https://www.npmjs.com/package/react-pdf | (文档 file="..." 。文件可以是 URL、base64 内容、Uint8Array等。)
从 IPFS 添加和检索文件工作成功。从 IPFS 检索到的文件以Uint8Array的形式传递到 Main.js 组件内的 Document 组件以查看 pdf 文件。但是,该页面无法加载 PDF 文件。另外,我收到一个错误:
Error: "Setting up fake worker failed: "window.pdfjsWorker is undefined"."
Run Code Online (Sandbox Code Playgroud)
请注意,我在 Main.js 中有以下内容:
<Document file={{ data: pdfFile.content }}></Document>
Run Code Online (Sandbox Code Playgroud)
应用程序.js
import React, { Component } from "react";
import Web3 from "web3";
import "./App.css";
import Meme from "../abis/Meme";
import Addressbar from "./Addressbar";
import Main from "./Main"; …Run Code Online (Sandbox Code Playgroud) 我创建了一个 React js 应用程序create-react-app,我正在尝试react-pdf查看 pdf。我遇到的问题是我的代码有时有效,有时无效。当我第一次加载应用程序时,pdf 总是加载得很好,但如果我访问网站上的其他链接/url,然后导航到包含 pdf 的页面,则 pdf 可能会在几次尝试后加载失败,并出现错误“加载失败” PDF 文件”。
这就是我的实现方式
进口
import { Document, Page, pdfjs } from 'react-pdf/dist/esm/entry.webpack';
import { useState } from 'react';
import 'react-pdf/dist/esm/Page/AnnotationLayer.css';
Run Code Online (Sandbox Code Playgroud)
代码实现
function ReactPDF() {
const imageKitURL = ' https://ik.imagekit.io/kwmvfjr0r';
const pdf = `${imageKitURL}/test_files/file-example_PDF_1MB.pdf`;
const [numPages, setNumPages] = useState(null);
const [pageNumber, setPageNumber] = useState(1);
function onDocumentLoadSuccess({ numPages }) {
setNumPages(numPages);
setPageNumber(1);
}
function changePage(offset) {
setPageNumber((prevPageNumber) => prevPageNumber + offset);
}
function previousPage() {
changePage(-1); …Run Code Online (Sandbox Code Playgroud) 我正在使用react-pdf库生成pdf。一切似乎都工作正常,但我无法使Link@react-pdf/renderer 中的元素正常工作。
const add_hyperlink = (url_text: string) => {
return <Text><Link src={url_text}>{url_text}</Link></Text>;
};Run Code Online (Sandbox Code Playgroud)
在 pdf 文档中,它显示为链接,甚至指针在悬停时发生变化,单击链接时,在 chrome 中没有任何反应,而在 adobe reader 中,它会导致安全阻止。
我尝试使用<a>标签代替,但它产生了相同的输出。有人知道如何解决这个问题吗?谢谢。
编辑: 我在研究这个问题时意识到的一些事情。记下是因为很容易对微小的差异感到困惑。
@react-pdf/renderer用于在 React 中创建 pdf。react-pdf用于在 React 应用程序中显示现有的 pdf。有几次提到使用注释选项,包括"import 'react-pdf/dist/Page/AnnotationLayer.css';"哪些选项可以使链接对许多开发人员正确显示。然而,这属于react-pdf库,只有在需要在react-app中渲染pdf时才有效。
在本例中,我正在创建一个新的 PDF,@react-pdf/renderer但我正在生成一个链接来下载生成的 PDF 文件(https://react-pdf.org/advanced#on-the-fly-rendering)。
我也找到了解决我的问题的方法。我使用的链接应该重定向到另一个网址,因此出现了问题。我使用了src中的最后一个链接,然后它工作顺利。
我希望这些观察对将来的人有帮助:)
react-pdf ×10
reactjs ×9
javascript ×5
pdf ×4
cors ×1
ipfs ×1
pdf.js ×1
react-native ×1
recharts ×1
text ×1
this ×1
typescript ×1
umijs ×1
webpack ×1