Вверх ↑
Ответов: 773
Рейтинг: 168
#1: 2024-08-19 20:37:27 ЛС | профиль | цитата
strannik_nebes писал(а):
Вопрос связан с распаковкой и упаковкой(после) данных блока "stream"-"endstream" файла pdf. Данные потока начинаются с "xњ".Согласно спецификации на формат с фильтром FlateDecode, данные сжаты в zlib/DEFLATE. Стандартный zlib или GZIP от Netspirit не распознают данные (Error 0, не подходит, судя по методу сжатия)...

Стандартный ZLIB прекрасно справляется с распаковкой сримов между stream и endstream в PDF фаилах.

Add(MainForm,14080331,161,266)
{
Width=880
Height=296
Point(onClose)
Point(onQueryEndSession)
link(onCreate,14896185:doConvert,[])
}
Add(BlockFind,9435204,252,280)
{
IncludeBlock=1
StartBlock="3C3C2F46696C7465722F466C6174654465636F64652F4C656E677468203131353E3E0A73747265616D0A"
EndBlock="0A656E6473747265616D0A"
link(onSearch,9676665:doStrCat,[])
}
Add(StreamConvertor,15103391,350,280)
{
Mode=1
link(onResult,97704:doDeCompress,[])
}
Add(StreamConvertor,14896185,210,280)
{
Point(Data)
link(onResult,9435204:doSearch,[])
link(Data,6715283:Stream,[])
}
Add(Memo,10167157,511,273)
{
Left=550
Top=160
Align=5
ScrollBars=3
}
Add(MemoryStream,6715283,210,224)
{
Stream=[255044462D312E350A25E2E3CFD30A352030206F626A0A3C3C2F46696C7465722F466C6174654465636F64652F4C656E677468203131353E3E0A73747265616D0A789C15CABB0E82401005D09EAFB8A59AB8EEFA0AB4265AD998CC0FE0EC4531C2C20EC4DF579B539D6284C70327D95C02C211D22054CEEF21576C3D4A5FB9C3AE84C45F93CF1F5DC8B335C4A473C77EC26C34D4D0D40D99668CD09CCCD6990D337B25A6FAFEA65B425E9015CE52DCBE4BA022610A656E6473747265616D0A656E646F626A0A342030206F626A0A3C3C2F547970652F466F6E742F537562747970652F54797065312F42617365466F6E742F48656C7665746963612D426F6C642F456E636F64696E672F57696E416E7369456E636F64696E673E3E0A656E646F626A0A332030206F626A0A3C3C2F547970652F50616765732F4B6964735B2031203020525D2F436F756E7420313E3E0A656E646F626A0A322030206F626A0A3C3C2F547970652F436174616C6F672F50616765732033203020523E3E0A656E646F626A0A312030206F626A0A3C3C2F547970652F506167652F4D65646961426F785B20302030203539352E3238203834312E38395D2F5265736F75726365733C3C2F466F6E743C3C2F46312034203020523E3E3E3E2F506172656E742033203020522F436F6E74656E74735B2035203020525D3E3E0A656E646F626A0A362030206F626A0A3C3C2F53697A6520372F526F6F742032203020522F49445B3C32383432313066393562616133383964393530626238373133376165636130613E3C32383432313066393562616133383964393530626238373133376165636130613E5D2F547970652F585265662F46696C7465722F466C6174654465636F64652F575B2031203220305D2F496E6465785B203120365D2F4C656E6774682032363E3E0A73747265616D0A789C63646C61640C676454666438C6C8C0CFC8F81700152902DB0A656E6473747265616D0A656E646F626A0A7374617274787265660A3530390A2525454F460A]
}
Add(ZLIB,97704,406,273)
{
link(onStream,8784320:doConvert,[])
}
Add(StreamConvertor,8784320,462,273)
{
Mode=6
link(onResult,10167157:doAdd,[])
}
Add(StrCat,9676665,301,280)
{
Str1="C70A0000"
link(onStrCat,15103391:doConvert,[])
}


strannik_nebes писал(а):
Вопрос решен с pdf.

Хотелось бы посмотреть на твоё решение.

Вот неплохая статья о том, как извлекать текст из pdf -
https://habr.com/ru/articles/69568/

P.S. По моему, PDF самый неудобный формат для парсинга. И это очень мягко… Обычно матом.
карма: 15

1
Голосовали:strannik_nebes