字符串转PDF白页,编码/Identity-H

String to PDF white page, Encoding /Identity-H

我有一个数据库,其中包含 table 和以下字段

这是一个非常古老的网络应用程序的一部分,该应用程序已不再使用,但仍在托管中,以防我们想返回以仔细检查信息。字段数据当前是表示文件的字符串(xml、html 和 pdf)。当记录是 pdf 时,我试图获取字符串 以 pdf 格式打开。我已经完成了:

我想知道制作此 pdf 以显示其内容可能缺少什么?

在理想情况下,我想 运行 在本地创建一个脚本来生成这些文件,然后将它们上传到 S3 存储桶,因为我们想停止运行此 Web 应用程序的服务器

Table mysql 中的结构

示例字符串:

%PDF-1.4
1 0 obj
<<
/Title (þÿC2B2-3DA7-9410-24DF::BF25-177E)
/Creator (þÿwkhtmltopdf 0.12.1)
/Producer (þÿQt 4.8.6)
/CreationDate (D:20150814130713+10'00')
>>
endobj
3 0 obj
<<
/Type /ExtGState
/SA true
/SM 0.02
/ca 1.0
/CA 1.0
/AIS false
/SMask /None>>
endobj
4 0 obj
[/Pattern /DeviceRGB]
endobj
6 0 obj
<<
/Type /XObject
/Subtype /Image
/Width 594
/Height 72
/ImageMask true
/Decode [1 0]
/Length 7 0 R
/Filter /FlateDecode
>>
stream
xœíÌ1
0ü›&vÒ
hÒ2µI¥R©T*•J¥R©T*•J¥R}©nZœ(ñ
endstream
endobj
7 0 obj
48
endobj
8 0 obj
<<
/Type /XObject
/Subtype /Image
/Width 594
/Height 72
/BitsPerComponent 8
/ColorSpace /DeviceRGB
/Mask 6 0 R
/Length 9 0 R
/Filter /FlateDecode
>>
stream
xœíÕ1
€PA||)h        t€äíLNÀu»öc™™™Mßvûý†™™ÙS=33ëì©Þ s©ª@‡êСzt¨ª@‡êСzt¨ª@‡êСzt¨ª@‡êСzt¨ª@‡êСzt¨ª@‡êСzt¨ª@‡êСzt¨ª@‡êСzt¨ª@‡êСzt¨ª@‡êСzt¨ª@‡êСzt¨ª@‡êСzt¨ª@‡êСzt¨ª@‡êСzt¨ª@‡êСzt¨ª@‡êСzt¨ª@Ç«zÌsZ£Å
endstream
endobj
9 0 obj
315
endobj
11 0 obj
<<
/Type /XObject
/Subtype /Image
/Width 634
/Height 100
/BitsPerComponent 8
/ColorSpace /DeviceGray
/Length 12 0 R
/Filter /FlateDecode
>>
stream
xœuX    \SǺŸoÎI"Ö-Å´O%D÷%„¢ ¸±/BØ!a_ÃHwq—MQ[ë­Ëµmmµ­µî·j«Õ.¶µÚÖwkûêmõ¾[Iï›$PÛþ^Îo`æœ93ß|ßþßBÈ ÒD8B¢â¦Í|>äèV¼ÓŠ%3¯¸.·%hÉ5¬? d¤%_Ÿ¥Óo[xŒÙwxÏ7ou—¸ââ†íñù%UÆ'’çŽb{>¶—åduÙºŸ¹¶ëK²Œåd^DÞƒm·Ò¬½4mÊ"l_'\   ÇWÀd""D´C¤Â;ãìÿ¹I.ÅX±ÿ¾"ƒû¢‰¢«
ÖŠ
'Á„ôYÅD $W²ƒ7{Ø3>@Ôƒ
7|]Dt8š7¶9"!ÏáäY@!UpRÀâ¬Àÿ à¼­ô¼¯ð?ð¬õySN„>|F­VQÏ“}"‰µÁjæ{{¥ÔHkŸÜ§éÖ½ô[šÎŒ‹s~sHÈ`\ƒ‚S‚
” î²µ¨½™zUS¯&˺@¸
B>ŽM…]IzßÜ{|$ñ"Äc¦ÆW­)KÄ^b/OµÚGã«ñUÍ”»È•>^žJw‰X&)w¡SªüÒ3Š?17øùçl8V] •ñ  û’µÚä˜ðЊœ˜¸)ÓÚ¶õŽÞT??¤°èpcdduõMåõÊ*fqrßÞ
ç•‘ „8{Ì$³Í¯tÇùå8—ŠÙ¤ÆÙñÂû2-Ì   ,+ÙpkÕJœSRºáÖÊÕF}ξ½zÝÔi±ñ…/èôtJwƒ9<´£óɨÝæÆùí½NgÍ

æ«rS~ž¿ÀÜx™­¼W~™ R\¹Ø‹M(UI©ÊMƒÿ”\BÉOG´Úè.ÌX½v7èuè»Ö(áʧÜðÞ‹ø~7Æõ
®@ŽƒÉ˜ù.r™T)eÆ¢«$X…³SRÊŽ$&ÔÎYQ–°Ô»–8©Sû@Vöyk½´%<Bë­Ï¡8¢¼ï
EÙF”ªdJ)s€‹Ffw‡T©VI!ñ«¯ncçO‹®×ø]º$Š~̶NK™4žÉ–.k¥7²A†c@DüŒˆxѦ”*ÐþUñ?›-ïšL\°™¾i
õX
t#ö>„3º‹    Û‘Ø[îF£˜E©}tkR†0g†9sZ¬D„8;"$µa£¸¢ììçUµ•Uwß6TA]\lçíô´/:ãâ©—¥};Àašñ„lÞm’ë5Æs`¹YSëÀ÷1zr,ñÆ}è΂­VÛ ¡a>•)db;4r10×*"hк²ŠÙsÅÅËÎWWZ,P”ÿB梅‹W
ÿZ–îLWÅ'Œœb2vNBL,X¹æ»ùÉ:“Ò=Òÿ4gÉѽ4´;;‹Ø£I· 
ñá©Û㧒1PÒ-ž“*""µ5é7fŒå>’Àìàë(>àð»CÑúƾÿÀd^ƒoŽ#DããÀ±ÄÎj7Êe¼å..rï   29ýcsûhW×ÑîJ¹Ü…{ç©qDtFÔ‰íp4N!c,ò¹5ÙÄ­²<¦ûék’¨§Àzû¾ˆ»k/öµ!i`G1d;ö”FÊï
ž[UÓ~}+
^{­ D=–±ÛJJýg-3ßå~´xÔåææ¾Î}Þ?û#ûì
%0ß DùG&Ë[f3VÏßéuõô*ø»è‘}}ü)ì;œ<GÂŽ­ÃhgÀ¶ÆWªÆ +O@DZM££¢¢7n~Sø   Fþ³u=¬YwWÔ×ÑufÕ¹ŽÎ˜8…õºwu€¨éIgZÒ‚k;-:O<Ð,ÇÂþDVÔAâ<þôèõ­÷÷™–…ÌŸÒ¼lÿ÷kWÉÍÓ„î‹ÕµU†sg²³\áâýºú˜˜¶í§Oéh‹‹YÖt°½M°³´·§¥¼Épjîû‘ÿg–3ÎûrXŒŸšÛE&¡vªr–°Ï/å
oj>Ð×½ÂÚ›hj
«ƒšÚkWŒõ`4~p½¦š®½ÜÑoMûÅ]q±11ÛÛÎŽ1Û:ÛÛ…G‚¥½CÑ«ÐÃð€R*E¾—2ÊI¡£èsûj¬÷3¬ß× Ó÷ŠDÈöõtÝßgm´.Ç×ñœgçD“
K6<ݶ.å†[j¸•–ÓƒÈGò¦¾ÀÕÇ7ÞÂ7F°¨Úˆë•37€“25ª‚Þ’ÍðÙw+–ClÜZ(n±üu;2Ò‘õŽ
ciKÔå†Ë
‹½­mCé%HNjíJL@«nâÈ‘¶\iç¡H“  [vk9¬ažö`vªÀ‡^³7çç³ÕPÛó­XbGüï¦yyØìbéK*<üfårXÖô³°ªe¤§eü]h¡1ÖWТÊêË”V@>$&tµkµ8+*~»-«:Ö«VðÛ…¡&aŸ)
rR^€½\±×ì5ˆÅBÅ&ÍS­¿˜¬¿n¥íÜhK•õ6ϵbïpäº7°·3öVIûSª?Õq
Pc|ï#ƒÁ×¹.  w´®™Le¥ÿØš²‡Ån)â°q¨Á†=5zjìÜÌhËÕ,WŽ”»Ø/›Flë¦rl
îaBâ×÷òÚ`ÝšO7W‚‚̹¹‡÷çä$']8¯×ù¨p~½³±yÞ|0AUåéƒùy[:7hqÁË/æhütúúí©ZX¸ØXîãë?+*ºäå¼|ðÓää4íLJ^¼ˆEf;Ú€¶rlÅ,¦œ§ƒÖGÚ×ÎrÍ»xz¸º¸¸zxºÈùðwwe¤èú;û±lû
f"5K5èlý®µFcìîÔðë&ªX!䈉eB=t~ÖÌ‚ôø%dv‚ºNá©î'Cæ1•
±È¨p°9“eð‘r™bF£¶    t".ÎÊ.Ù•™
+–?ø®iÀ­j4{^+(P
ƒŒi“?yM§Ÿ2S7iÊÒÄU»ÒRÀT9^ðÜäf¾6õ쎒³ü³
*O  Ä5µã.nBË<û„›œýå¥v¡t¨ˆ§Å3Zm°€ìÌZH«ž=gýò¤äÁuÁóVVÄÄxù€ž¬™3nèü|AXiJÿ±9<,6¶ÚêCo¬
à¹ÖÑLkp6ŽFz@5:–±™¥mÝ¿sìD­±mõï»èù¾¾nvPacä07ܶCÅ®ôHJîVBtWbüÒäá}QOfö[†Øøñc2³—-*ú¶õpLÔæUÑ‘ùºjüô€õE7z@Ͳ®—ãR;°,PH–;(׎c´‰a6oŽŠñð**<p¼´Ä]W¶ 0`Owt¤§@IÙ±SHô&ˆ‹]½,"œ“4j·1¼üýcb’´›Óƒƒ|Ôñ±“¦xxN˜0+~-F75¥µ `‚­ÄøpGÑm?›°VÁO°Ð$g    …¦¿qm½íú-Õˬ¢Â÷3xÊ5ά»—ÄöΞg]Ïø/ù³p!WøaèPáç\á¢é·´l.ÐrÅPÀÍé½ÈigZöã(…‰“2NëCă
œÒRJ_~JaÖr-Y¨0ÿ"1mzn'æNΦçÜìw‚Œm&›z•öËl‰ÔF<W^ñν*C­á«ÓeFd󎪨oío¥Ï
ÛÚl뮣°e›ÐË}‚gÐø—®W««Ñz<³Ñ×EÇ™×pß‹Ô*úºQ¨‚‡#EnÛÊO 5FŒþcä)Q¢5Ô~ìp–Ž°/U*ñ±[#—°ãc(¯¸}«²
_Þ2jcâöíÅ`ÅÇïÝK3„«{^ØÝ
“@ªÝ»:º„OÅOšQõ7<¾ùmÅŠææßX¬²qîG87’ÞmÊtÞ¿~'P5žÆ±/¼”°Íœ±d¢wTô¶
IZ£¿¿^g¾h0Ì›_¹ý^Wµ¥¨4 ÐÙY;’ -㸑…úrnPÜúè¨Ø¸Õåi*UqÉ[IÚI^)éoW@­ÊHmhML†èÈÎ-¸ÉÐSÍÈøƒD'É2•q…ÒM"–öÛ(î×!j5Õøzp²~™‡&s‹‡ ÿî蜕šjx§¢|Ô997–·À«Ç ü‹Ê¬EvV÷z4–ŠNæuíÆN›²bÕÇ›*As¡³ã_FXýé'`í ÍË=]k,+=t8?ù03ß`ä1Ë|¨0=¶nm …–óÜ)QÑ“6Ñ¢\†:]ßcîúz™n×l^âœe#]ÔJ±Ï7<.€™Íh™a\ŽÞæʃÓ3KÌé*5øùê³[¾¨¯ƒ„ý.A²v°ß˜™>RÒvmÒ¦$/¥{3fªæW”¯ÞT[3/pM÷‹…êaëæóÂ*Cï˜êÀPõòþ²
¶Ž\Ç(´ÏÌÕàÀ‚×@Zø àGYÊáWóôé11·á„µ~¾ù¹-—åAs÷…ÔšJ}7¦§&¯‹‰‚ôŒ6“^7Ë¿ àxn]ýk#9r#é‚>ç)g”2Ü@2´9…mCÔ|NoY7©ªvŸ¯©6®®®Q9"!~SwtRîŽÄ9Aaôz±LÐØôñ·ME…§Û–Dää¼ñ¼^2ùlœwl_ýÁ®¬äHFëKhfqƒx
F'W¿Ÿ¶©IvìdJùJ!•pù÷î­qto‹µ”ŽVÃÇza3”Ïç,.8•å‘\“#¶ÁUÜŸÝqAO;5ŽôÊ=%NضSsÊ‘÷ú½yóŠ"–46]ÿ¨—²hASqð\¨®<sº¶:6+»½3#3-mÊIOHHZ¹6. 1~íêÄÞߤ89#sÙÛÅ¥PZò¶);sòDm’áxQ!—XÚW'/…„Äõ­x¤ˆ‹m¥'ÍŒþ£b—7EFBtúh½0‘–ˆ3™¾u¶cSnÛ\HbËO­~š’¢†1!ÁsUªqnÓ§ÆÇêÇ4ûúÑ%Ÿ]{ÿïÇLÓjÍ
];ÏxæìÖ¶…K¼ÊNenÂb®ÇñÅýkc_µœá%‹_!°Y˜ášüæäés–úùzª…ü–ÃÜÆÞa~†åˆ'O,ÚÊÏ`R •­Õ‘xùöó^vH©¯_aQ󘬄ØÓ§OO̳¬¨Ð_CgyùêÁCaÛ¶^8ûígßíìˆ8xèýŒËXÆa§|•Ú.Ö$v$cÒû—W_…ĸÎ@'U@ŽÆ€
w+»å¥ä$€º!³ƒÊWe[¼Ùh3h4A3Ì1r #Ü¥ÑzÆ  ÅB÷fþqŒÑl§d¹Z%uˆB\…ýËؾ3x9¾4”Ÿû²ª²ºæREn~@Hã+ññ•_œ*7Ø>:¤MŒŠ.µ}v°âqé•îÞÛ7êêU3t'/ݽæhoï]¯1^„ÿÍóó­©eYQÈä)Ú"%îYÑ~úg•z90‹Y¹1ÊÓòŠ·îÔÔªïž++3&$v”FEO˜UÚžoKŒÝÖ[¢Ï»Ã6LŒü5£||uÖßÒf̨¯EÏTöMç¬â
Äÿ)Ï\­VÉú…ís—x@³HË”j±#Ù¶ÊÊßc¤§Ïy9÷T„1q­›"£aÑžW¢#'xåæÓ_.)5BªvßFmä•…‡…ådí|1W7üòeieÕ%&TQ›!¡¾~—äíÓå}çŠþ÷º“’!b    Z»¥ï?ˆjdø_¿olùÿ?`0ØŠèùµ¡Ã³¾ý    ÅMè `YÄñÃw$Å*}§}ª>•¸É6ÒÓ¿@<Kéø>2–GÒyÑòzÒ…¥›n%røç<HNÀrˆ7bÞhéQÒ
GH#ßDNˆæ‘}¢#ø6–™¤ETHÄÈ  ~¶G’ãTAnòlÿ„åñá/W>„ó§HŽÙÆýHºù…D'‘“vþ>öJôÜgÄS<ˆñ:|VFvb9†¥K6–åX"°è±`9ÀMAÛËH–Bº´rï7º“(èK$ˆ."3ør´Û>N%|O¶àšg’(²ž\%@³ðŠ…tØ7á!Oh­£è?¹‰ÜbNǵs{¹cÜ—ÜC^ÂOàùùwECE‹EE_‹‹ÇˆÃÄfññ‰»¤DÒ,ùpdPÈ èAeƒ>v9y;%:58­wúpðàÁYƒ—ÙãAÉ\vúv´þü“-îràìçaGbFquÔ¹§îóOÕEd2êk{]Œ÷cõa$žbý‡¥
‹Y‚™:äc+–è±VMŠI1DlH%>-#¥Øo&rÊt¼fà¥Æ2Ëvµ}þ0┧Fd¥Š”£œ†W­íšŠ£—cÉÁ§zl•á,yø´ßÊÁ;¥8§Ë4g!æÑPIâðï»ÿC%˜ð
endstream
endobj
36 0 obj
4859
endobj
34 0 obj
<< /Type /Font
/Subtype /CIDFontType2
/BaseFont /Roboto-Light
/CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >>
/FontDescriptor 32 0 R
/CIDToGIDMap /Identity
/W [0 [440 620 511 556 545 545 319 241 702 222 551 512 334 208 558 652 704 650 644 671 858 564 630 264 523 611 592 594 546 588 222 486 531 879 608 502 477 748 544 550 550 550 550 550 550 550 550 550 394 550 550 316 471 323 328 284 550 550 550 237 ]
]
>>
endobj
35 0 obj
<< /Length 777 >>
stream
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> def
/CMapName /Adobe-Identity-UCS def
/CMapType 2 def
1 begincodespacerange
<0000> <FFFF>
endcodespacerange
2 beginbfrange
<0000> <0000> <0000>
<0001> <003B> [<0041> <0063> <006F> <0075> <006E> <0074> <0020> <0048> <006C> <0064> <0065> <0072> <003A> <0046> <0055> <004E> <0044> <0043> <004F> <004D> <0045> <0052> <0049> <004C> <0050> <0054> <0059> <004A> <0053> <0069> <006B> <0061> <006D> <0042> <0073> <0076> <0077> <0068> <0062> <0031> <0030> <0033> <0036> <0037> <0039> <0032> <0035> <002F> <0034> <0038> <0028> <0079> <0029> <0066> <002D> <0067> <0070> <0024> <002E> ]
endbfrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end

endstream
endobj
10 0 obj
<< /Type /Font
/Subtype /Type0
/BaseFont /Roboto-Light
/Encoding /Identity-H
/DescendantFonts [34 0 R]
/ToUnicode 35 0 R>>
endobj
2 0 obj
<<
/Type /Pages
/Kids 
[
5 0 R
]
/Count 1
/ProcSet [/PDF /Text /ImageB /ImageC]
>>
endobj
xref
0 37
0000000000 65535 f 
0000000009 00000 n 
0000023948 00000 n 
0000000223 00000 n 
0000000318 00000 n 
0000008502 00000 n 
0000000355 00000 n 
0000000560 00000 n 
0000000578 00000 n 
0000001075 00000 n 
0000023809 00000 n 
0000001094 00000 n 
0000004216 00000 n 
0000004237 00000 n 
0000008431 00000 n 
0000017155 00000 n 
0000013032 00000 n 
0000008452 00000 n 
0000008859 00000 n 
0000010796 00000 n 
0000008623 00000 n 
0000008839 00000 n 
0000010817 00000 n 
0000011026 00000 n 
0000012309 00000 n 
0000012560 00000 n 
0000012288 00000 n 
0000013174 00000 n 
0000013437 00000 n 
0000016203 00000 n 
0000016536 00000 n 
0000016182 00000 n 
0000017295 00000 n 
0000017557 00000 n 
0000022528 00000 n 
0000022980 00000 n 
0000022507 00000 n 
trailer
<<
/Size 37
/Info 1 0 R
/Root 17 0 R
>>
startxref
24046
%%EOF

我能够访问 sftp。

我 运行 下面的脚本并使用 filezilla 下载文件。

因为文件以其 ID 命名,我们能够 link 到实际的父记录

<?php
    $db_con = mysqli_connect("localhost", "my_user", "my_pass","my_database");
    if ($db_con->connect_error) {
        die("Connection failed: " . $db_con->connect_error);
    }
    $sql = "SELECT id, data, app_id FROM my_table WHERE SUBSTRING(data, 1, 4) = '%PDF'";
    $result = $db_con->query($sql);
    if ($result->num_rows > 0) {
        while($row = $result->fetch_assoc()) {
            $fname = $row['id'].'-'.$row['app_id'].".pdf";
            $myfile = fopen('pdf/'.$fname, "w") or die("Unable to open file!");
            $txt = $row['data'];
            fwrite($myfile, $txt);
            fclose($myfile);
        }
    } else {
        echo "0 results";
    }

    $db_con->close();
?>