在页面中嵌入PDF字节流的问题

时间:2015-10-31 19:51:45

标签: html pdf stream

我在服务器上生成内存中的PDF,并希望将结果作为字节流发送,以在网页上显示为PDF。我似乎没有按顺序排列所有内容,因为没有一个主流浏览器会正确显示PDF。我已经尝试过embed,object和iframe标签,但无法使其正常工作。

这是从IE页面复制的嵌入版本:

  

<嵌入宽度=“100%”高度=“100%”   SRC =“数据:应用/ PDF,%PDF-1.4 %ÓôÌá 1 0   OBJ &LT;&LT; / CreationDate(d:20151030142159-07'00' ) /标题(创建   用PDFsharp) / Creator(PDFsharp 1.32.3057-g   (www.pdfsharp.net)) /制片人(PDFsharp 1.32.3057-g   (www.pdfsharp.net)) &GT;&GT; endobj 2 0   OBJ &LT;&LT; /类型/目录 / Pages 3 0 R &GT;&GT; endobj 3   0 obj &LT;&LT; /类型/页 /计数1 /孩子[4 0   R] &GT;&GT; endobj 4 0 obj &LT;&LT; /类型/页 /多媒体[0   0 612 792] / Parent 3 0 R /目录5 0   [R /资源 &LT;&LT; / ProcSet   [/ PDF /文本/ ImageB / ImageC / ImageI] / ExtGState &LT;&LT; / GS0 6 0   [R &GT;&GT; /字体 &LT;&LT; / F0 8 0   [R &GT;&GT; &GT;&GT; /组 &LT;&LT; / CS / DeviceRGB / S /透明度 /一世   假 / K假 &GT;&GT; &GT;&GT; endobj 5 0   OBJ &LT;&LT; /长度   98 /过滤/ FlateDecode &GT;&GT; 流 ?X +ä2T0B]eni¤d ??(TQr9pé»??(¤Sé»???? AOL,ôÌÍM大号OI,BR 4 GT?????; endobj 7 0   OBJ &LT;&LT; /类型/ FontDescriptor / Ascent 891 /大写高度   662 /下降-216 /标志32 / FontBBox [-547 -307 1401   1032] / ItalicAngle -16.333 / StemV 0 / X字高   439 / FONTNAME / TimesNewRoman,BOLDITALIC &GT;&GT; endobj 8 0   OBJ &LT;&LT; /类型/字体 /亚型/ TrueType字体 / BASEFONT / TimesNewRoman,BOLDITALIC /编码/ WinAnsiEncoding / FontDescriptor   7 0 R / FirstChar 0 / LastChar 255 /宽度[777 777 777 777   777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777   777 777 777 777 777 777 777 777 777 777 777 250 389 555 500 500 833   777 277 333 333 500 569 250 333 250 277 500 500 500 500 500 500 500   500 500 500 333 333 569 569 569 500 832 666 666 666 722 666 666 722   777 389 500 666 610 889 722 722 610 722 666 556 610 722 666 889 666   610 610 333 277 333 569 500 333 500 500 443 500 443 333 500 556 277   277 500 277 777 556 500 500 500 389 389 277 556 443 666 500 443 389   348 220 348 569 777 500 777 333 500 500 1000 500 500 333 1000 556 333   943 777 610 777 777 333 333 500 500 350 500 1000 333 1000 389 333 722   777 389 610 250 389 500 500 500 500 220 500 333 747 266 500 605 333   747 500 399 548 299 299 333 576 500 250 333 299 299 500 750 750 750   500 666 666 666 666 666 666 943 666 666 666 666 666 389 389 389 389   722 722 722 722 722 722 722 569 722 722 722 722 722 610 610 500 500   500 500 500 500 500 722 443 443 443 443 443 277 277 277 277 500 556   500 500 500 500 500 548 500 556 556 556 556 443 500   443] &GT;&GT; endobj 外部参照 0 9 0000000000 65535 f    0000000015 00000 0000000210 00000 0000000258 00000   ñ 0000000313 00000 0000000568 00000 0000000736   00000 0000000779 00000 0000000981 00000    预告片 &LT;&LT; / ID并[d 24C49FD36FB7C74593CB248B32E8A112&GT;&LT; 24C49FD36FB7C74593CB248B32E8A112&GT;] /信息   1 0 R / Root 2 0 R. /尺寸   9 &GT;&GT; startxref 2178 %% EOF “type =”application / pdf“   /&GT;

本文档仅包含“Hello,World!”并使用C#中的File.ReadAllBytes(...)从实际的PDF文件直接吸入。

1 个答案:

答案 0 :(得分:4)

你错过了一步。嵌入式PDF需要编码。

以下是类似的小PDF。我通过将PDF上传到网站http://www.motobit.com/util/base64-decoder-encoder.asp将其编码为base 64。

然后我将base64结果粘贴到我的嵌入元素中,如下所示:

<embed width="100%" height="100%" src="data:application/pdf;base64,JVBERi0xLjMKJaWx6woxIDAgb2JqCjw8IC9UeXBlIC9DYXRhbG9nIC9QYWdlcyAyIDAgUiA+Pgpl
bmRvYmoKMiAwIG9iago8PCAvVHlwZSAvUGFnZXMgL0NvdW50IDEgL0tpZHMgWyAzIDAgUiBdIC9S
ZXNvdXJjZXMgPDwgL1BhdHRlcm4gPDwgL1B0MSA1IDAgUiA+PiAvUHJvY3NldCBbIC9QREYgL1Rl
eHQgXSA+PiA+PgplbmRvYmoKMyAwIG9iago8PCAvVHlwZSAvUGFnZSAvQ29udGVudHMgNCAwIFIg
L01lZGlhQm94IFsgMCAwIDIzMCAyMTAgXSAvUGFyZW50IDIgMCBSID4+CmVuZG9iago0IDAgb2Jq
Cjw8IC9MZW5ndGggNjE5ID4+CnN0cmVhbQoKcQowIEcKMSAxIDAgcmcKMjUgMTc1IDE3NSAtMTUw
IHJlCmYKL1BhdHRlcm4gY3MKL1B0MSBzY24KOTkuOTIgNDkuOTIgbQo5OS45MiA3Ny41MiA3Ny41
MiA5OS45MiA0OS45MiA5OS45MiBjCjIyLjMyIDk5LjkyIC0wLjA4IDc3LjUyIC0wLjA4IDQ5Ljky
IGMKLTAuMDggMjIuMzIgMjIuMzIgLTAuMDggNDkuOTIgLTAuMDggYwo3Ny41MiAtMC4wOCA5OS45
MiAyMi4zMiA5OS45MiA0OS45MiBjCkIKMjI0Ljk2IDQ5LjkyIG0KMjI0Ljk2IDc3LjUyIDIwMi41
NiA5OS45MiAxNzQuOTYgOTkuOTIgYwoxNDcuMzYgOTkuOTIgMTI0Ljk2IDc3LjUyIDEyNC45NiA0
OS45MiBjCjEyNC45NiAyMi4zMiAxNDcuMzYgLTAuMDggMTc0Ljk2IC0wLjA4IGMKMjAyLjU2IC0w
LjA4IDIyNC45NiAyMi4zMiAyMjQuOTYgNDkuOTIgYwpCCjg3LjU2IDIwMS43IG0KNjMuNjYgMTg3
LjkgNTUuNDYgMTU3LjMyIDY5LjI2IDEzMy40IGMKODMuMDYgMTA5LjUgMTEzLjY2IDEwMS4zIDEz
Ny41NiAxMTUuMSBjCjE2MS40NiAxMjguOSAxNjkuNjYgMTU5LjUgMTU1Ljg2IDE4My40IGMKMTQy
LjA2IDIwNy4zIDExMS40NiAyMTUuNSA4Ny41NiAyMDEuNyBjCkIKNTAgNTAgbQoxNzUgNTAgbAox
MTIuNSAxNTguMjUzIGwKYgpRCmVuZHN0cmVhbQplbmRvYmoKNSAwIG9iago8PCAvVHlwZSAvUGF0
dGVybiAvQkJveCBbIDAgMCAxMDAgMTAwIF0gL01hdHJpeCBbIDAuNCAwIDAgMC40IDAgMCBdIC9Q
YWludFR5cGUgMSAvUGF0dGVyblR5cGUgMSAvUmVzb3VyY2VzIDw8IC9Gb250IDw8IC9GMSA2IDAg
UiA+PiA+PiAvVGlsaW5nVHlwZSAyIC9YU3RlcCAxMDAgL1lTdGVwIDEwMCAvTGVuZ3RoIDE4MyA+
PgpzdHJlYW0KCnEKQlQKL0YxIDEgVGYKNjQgMCAwIDY0IDcuMTc3MSAyLjQ0MTQgVG0KMCBUYwow
IFR3CjEgMCAwIHJnCihcMjUzKSBUagowLjc0NzggLTAuMDA3IFRECjAgMSAwIHJnCihcMjUyKSBU
agotMC43MzIzIDAuNzgxMyBURAowIDAgMSByZwooXDI1MSkgVGoKMC42OTEzIDAuMDA3IFRECjAg
MCAwIHJnCihcMjUwKSBUagpFVApRCmVuZHN0cmVhbQplbmRvYmoKNiAwIG9iago8PCAvVHlwZSAv
Rm9udCAvU3VidHlwZSAvVHlwZTEgL0Jhc2VGb250IC9aYXBmRGluZ2JhdHMgPj4KZW5kb2JqCnhy
ZWYKMCA3CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNCAwMDAwMCBuIAowMDAwMDAwMDYz
IDAwMDAwIG4gCjAwMDAwMDAxODkgMDAwMDAgbiAKMDAwMDAwMDI3OCAwMDAwMCBuIAowMDAwMDAw
OTQ4IDAwMDAwIG4gCjAwMDAwMDEzNTAgMDAwMDAgbiAKdHJhaWxlcgo8PCAvUm9vdCAxIDAgUiAv
U2l6ZSA3ID4+CnN0YXJ0eHJlZgoxNDIzCiUlRU9G"/>

如果您将上述内容保存为html,然后使用浏览器打开它,您应该会看到以下单页PDF。

embedded PDF

我建议您尝试使用类似的过程将PDF编码为base 64并将其嵌入上面。