我有一个挑战,从前端解析原始PDF文件。原始PDF文件的结构如下所示
%PDF-1.3 %���� 1 0 obj << /Type /Catalog /Pages 2 0 R /PageMode /UseThumbs>>endobj2obj<</Type /Pages/Kids [ 4 0 R ]/Count 1
我尝试使用ng2-pdf-viewer
和pdfjs-dist
,但它似乎只需要文件的位置,而不是像上面的例子那样以二进制形式存储原始文件。
我已经尝试过使用Angular,我很感激任何形式的帮助。下面是我代码片段。
<pdf-viewer [src]="pdfString" [show-all]="true"></pdf-viewer>
pdfString: string = '%PDF-1.7\n%�І�\n1 0 obj\n<</SubFilter/adbe.pkcs7.'
2条答案
按热度按时间uhry853o1#
根据文档,如果您的PDF文件存储为BASE64编码的字符串,则可以使用
pdfSrc = atob(pdfString)
首先将其转换为二进制字符串。另一方面,如果你的pdf是一个简单的字符串,你可以使用
pdfSrc = btoa(pdfString)
。然后使用
<pdf-viewer [src]="pdfSrc" [show-all]="true"></pdf-viewer>
dsekswqp2#
这里的问题是
ng2-pdf-viewer
和pdfjs-dist
期望文件位置或结构化数据格式作为源,而不是您试图传递的原始字符串。要解析原始PDF内容,可以使用Blob
对象。此对象表示不可变的原始二进制数据,可用于显示PDF内容。下面是如何使用Angular和ng2-pdf-viewer
实现这一点:1.将原始PDF数据转换为
Blob
对象。1.从
Blob
对象创建对象URL。1.将对象URL作为源传递给
ng2-pdf-viewer
。本例采用原始PDF字符串,以Base64对其进行编码,将其转换为
Uint8Array
,将其 Package 在Blob
中,然后创建可作为源传递给ng2-pdf-viewer
的对象URL。这应该允许您在Angular应用程序中渲染PDF。