SPL 文件解析
进来有对于Windows 打印文档内容进行截取的需求,深入研究了相关方案。可以遵循以下方法来实现。
如上图需要把画框区域的复选框打钩,这样就可以在打印过程中就可以在目录 C:\Windows\System32\spool\PRINTERS 下保留打印临时文件,每次打印保留两个文件分别以.SHD 和 .SPL 结尾。 .SHD 为打印控制文件,.SPL 存储打印内容。我们可以通过解析 SPL文件的方式来获得打印内容。
SPL文件根据操作系统的版本不同解析方法有差异。
Win10 系统
Win10 系统下其实是一个打包的 zip 压缩文件,可以先将文件后缀名改为.zip 后用解压缩工具打开,如下图:
我们需要重点关注Documents 目录,在Documents\1\Pages 路径下保存着打印文档的元数据信息,如下图:
1.fpage 内容如下:
<FixedPage Width="793.76" Height="1122.56" xmlns="http://schemas.openxps.org/oxps/v1.0" xml:lang="und">
<!-- Microsoft XPS Document Converter (MXDC) Generated! Version: 0.3.9600.16384 -->
<Glyphs Fill="#ff000000" FontUri="../Resources/Fonts/75F130F1-D7EC-4D18-84BB-D0114A477EE5.odttf" FontRenderingEmSize="16.0006" StyleSimulations="None" OriginX="332.8" OriginY="108.32" Indices="7136;5418;7095;7516;7095;7827;17;87;91;87" UnicodeString="新建文本文档.txt" />
<Glyphs Fill="#ff000000" FontUri="../Resources/Fonts/75F130F1-D7EC-4D18-84BB-D0114A477EE5.odttf" FontRenderingEmSize="16.0006" StyleSimulations="None" OriginX="75.68" OriginY="126.56" Indices="1424;7263;1114;3927;3455;15611" UnicodeString="你是个大坏蛋" />
<Glyphs Fill="#ff000000" FontUri="../Resources/Fonts/75F130F1-D7EC-4D18-84BB-D0114A477EE5.odttf" FontRenderingEmSize="16.0006" StyleSimulations="None" OriginX="368.8" OriginY="1023.52" Indices="12636;3;20;3;20133" UnicodeString="第 1 页" />
</FixedPage>
通过读取该文件可以得到文件的元数据信息。
Win 7 及 xp 操作系统
SPL文件在Win7 及 xp 系统中是一种标准的文件格式,具体可以参考 SPL 格式文档下载. 该文档格式为二进制格式,格式内容可以用下图表示:
简单来说如果打印内容为两页文档,可以用下图表示:
如下为SPL解析示例代码:
using namespace std;
long ReadLongFromFile(FILE * pFile);
void ReadOneSpace(char* name, FILE * pFile);
long ReadOneSpaceReturn(char* name, FILE * pFile);
void ReadOneRecord(int recordID, FILE * pFile);
void WriteBuffer(wchar_t buffer[2000]);
void ReadOneEMR(FILE * pFile);
void ReadOneSpaceFromBuffer(char* name, wchar_t * pFile, int pointer);
int main()
{
setlocale(LC_ALL, "");
const char* pszFileName = "D:\\tmp\\00004.SPL";
FILE * pFile;
pFile = fopen(pszFileName, "r");
if (pFile != NULL)
{
//Read all content.
for (size_t i = 1; i < 10000; i++)
{
int c = fgetc(pFile);
if (c==EOF)
{
break;
}
printf("%02X ", c);
if (i % 8 == 0)
{
if (i % 16 == 0)
{
cout << endl;
continue;
}
printf(" ");
}
}
//Read structure.
fseek(pFile,0,SEEK_SET);
cout << endl;
ReadOneSpace(const_cast<char*>("dwVersion"),pFile);
long position= ReadOneSpaceReturn(const_cast<char*>("cjSize"), pFile);
ReadOneSpace(const_cast<char*>("dpszDocName"), pFile);
ReadOneSpace(const_cast<char*>("dpszOutput"), pFile);
wchar_t buffer[2000] = { };
wchar_t wTmp;
for (size_t i = 0; ; i++)
{
fread(&wTmp, sizeof(wTmp), 1, pFile);
if (!wTmp)
break;
memcpy((wchar_t*)&buffer[i], (wchar_t*)&wTmp, sizeof(wTmp));
}
wprintf(L"%s",buffer);
//EMRI_METAFILE_DATA
fseek(pFile, position, 0);
cout << endl;
ReadOneEMR(pFile);
ReadOneSpace(const_cast<char*>("tail1"), pFile);
ReadOneSpace(const_cast<char*>("tail2"), pFile);
ReadOneEMR(pFile);
ReadOneSpace(const_cast<char*>("tail1"), pFile);
ReadOneSpace(const_cast<char*>("tail2"), pFile);
fclose(pFile);
}
int a;
cin >> a;
return 0;
}
void ReadOneEMR(FILE * pFile)
{
wchar_t wTmp;
ReadOneSpace(const_cast<char*>("ulID"), pFile);
long cjSize = ReadOneSpaceReturn(const_cast<char*>("cjSize"), pFile);
//EMR_HEADER
ReadOneSpace(const_cast<char*>("Type"), pFile);
ReadOneSpace(const_cast<char*>("Size"), pFile);
ReadOneSpace(const_cast<char*>("Bounds1"), pFile);
ReadOneSpace(const_cast<char*>("Bounds2"), pFile);
ReadOneSpace(const_cast<char*>("Bounds3"), pFile);
ReadOneSpace(const_cast<char*>("Bounds4"), pFile);
ReadOneSpace(const_cast<char*>("Frame1"), pFile);
ReadOneSpace(const_cast<char*>("Frame2"), pFile);
ReadOneSpace(const_cast<char*>("Frame3"), pFile);
ReadOneSpace(const_cast<char*>("Frame4"), pFile);
ReadOneSpace(const_cast<char*>("Signature"), pFile);
ReadOneSpace(const_cast<char*>("Version"), pFile);
ReadOneSpace(const_cast<char*>("Bytes"), pFile);
long recordCount = ReadOneSpaceReturn(const_cast<char*>("Records"), pFile);
ReadOneSpace(const_cast<char*>("HandlesReserved"), pFile);
ReadOneSpace(const_cast<char*>("nDescription"), pFile);
ReadOneSpace(const_cast<char*>("offDescription"), pFile);
ReadOneSpace(const_cast<char*>("nPalEntries"), pFile);
ReadOneSpace(const_cast<char*>("Device1"), pFile);
ReadOneSpace(const_cast<char*>("Device2"), pFile);
ReadOneSpace(const_cast<char*>("Millimeters1"), pFile);
ReadOneSpace(const_cast<char*>("Millimeters2"), pFile);
ReadOneSpace(const_cast<char*>("cbPixelFormat"), pFile);
ReadOneSpace(const_cast<char*>("offPixelFormat"), pFile);
ReadOneSpace(const_cast<char*>("bOpenGL"), pFile);
ReadOneSpace(const_cast<char*>("MicrometersX"), pFile);
ReadOneSpace(const_cast<char*>("MicrometersY"), pFile);
wchar_t buffer2[2000] = { };
for (size_t i = 0; i < 12; i++)
{
fread(&wTmp, sizeof(wTmp), 1, pFile);
memcpy((wchar_t*)&buffer2[i], (wchar_t*)&wTmp, sizeof(wTmp));
}
wprintf(L"EmfDescription:%s", buffer2);
for (size_t i = 0; i < recordCount; i++)
{
ReadOneRecord(i, pFile);
}
}
void ReadOneRecord(int recordID,FILE * pFile)
{
cout << endl;
printf("This is record%d",recordID);
cout << endl;
long type = ReadOneSpaceReturn(const_cast<char*>("Type"), pFile);
long size = ReadOneSpaceReturn(const_cast<char*>("Size"), pFile);
wchar_t buffer[2000] = { };
wchar_t wTmp;
for (size_t i = 0;i< (size -8)/2; i++)
{
fread(&wTmp, sizeof(wTmp), 1, pFile);
memcpy((wchar_t*)&buffer[i], (wchar_t*)&wTmp, sizeof(wTmp));
}
//wprintf(L"RecordContent:%s", recordID, buffer);
WriteBuffer(buffer);
if (type == 0x00000054)
{
cout << endl;
cout << "This is a content record." << endl;
ReadOneSpaceFromBuffer(const_cast<char*>("Bounds1"), buffer, 0);
ReadOneSpaceFromBuffer(const_cast<char*>("Bounds2"), buffer, 2);
ReadOneSpaceFromBuffer(const_cast<char*>("Bounds3"), buffer, 4);
ReadOneSpaceFromBuffer(const_cast<char*>("Bounds4"), buffer, 6);
ReadOneSpaceFromBuffer(const_cast<char*>("iGraphicsMode"), buffer, 8);
ReadOneSpaceFromBuffer(const_cast<char*>("exScale"), buffer, 10);
ReadOneSpaceFromBuffer(const_cast<char*>("eyScale"), buffer, 12);
ReadOneSpaceFromBuffer(const_cast<char*>("Reference1"), buffer, 14);
ReadOneSpaceFromBuffer(const_cast<char*>("Reference2"), buffer, 16);
ReadOneSpaceFromBuffer(const_cast<char*>("Chars"), buffer, 18);
ReadOneSpaceFromBuffer(const_cast<char*>("offString"), buffer, 20);
ReadOneSpaceFromBuffer(const_cast<char*>("Options"), buffer, 22);
ReadOneSpaceFromBuffer(const_cast<char*>("Rectangle1"), buffer, 24);
ReadOneSpaceFromBuffer(const_cast<char*>("Rectangle2"), buffer, 26);
ReadOneSpaceFromBuffer(const_cast<char*>("Rectangle3"), buffer, 28);
ReadOneSpaceFromBuffer(const_cast<char*>("Rectangle4"), buffer, 30);
ReadOneSpaceFromBuffer(const_cast<char*>("offDx"), buffer, 32);
wchar_t bufferTmp[2000] = { };
int pointer = 34;
for (size_t i = 0; ; i++)
{
if (!buffer[pointer])
{
break;
}
memcpy((wchar_t*)&bufferTmp[i], (wchar_t*)&buffer[pointer], sizeof(wTmp));
pointer++;
}
wprintf(L"Content:%s", bufferTmp);
}
}
void WriteBuffer(wchar_t buffer[2000])
{
cout << "RecordContent:";
int lastZero = 0;
for (size_t i = 0; i < 2000; i++)
{
if (buffer[i])
{
lastZero = i;
}
}
if (lastZero >0)
{
for (size_t i = 0; i < lastZero; i++)
{
wprintf(L"%s",&buffer[i]);
}
}
cout << endl;
}
void ReadOneSpace(char* name, FILE * pFile)
{
long result = ReadLongFromFile(pFile);
cout <<name<<":";
printf("%08X", result);
cout << "-";
long fPointer = ftell(pFile)-1;
printf("%08X", fPointer);
cout << endl;
}
void ReadOneSpaceFromBuffer(char* name, wchar_t * pFile,int pointer)
{
long result = pFile[pointer];
cout << name << ":";
printf("%08X", result);
cout << endl;
}
long ReadOneSpaceReturn(char* name, FILE * pFile)
{
long result = ReadLongFromFile(pFile);
cout << name << ":";
printf("%08X", result);
cout << "-";
long fPointer = ftell(pFile)-1;
printf("%08X", fPointer);
cout << endl;
return result;
}
long ReadLongFromFile(FILE * pFile)
{
long result=0;
int size = fread(&result,4,1,pFile);
return result;
}
结果:
00 00 01 00 3C 00 00 00 10 00 00 00 2A 00 00 00
B0 65 FA 5E 87 65 2C 67 87 65 63 68 20 00 2D 00
20 00 B0 8B 8B 4E 2C 67 00 00 70 00 64 00 66 00
63 00 6D 00 6F 00 6E 00 00 00 00 00 0C 00 00 00
9C 06 00 00 01 00 00 00 84 00 00 00 D8 01 00 00
4F 02 00 00 DA 0A 00 00 0B 19 00 00 00 00 00 00
00 00 00 00 08 52 00 00 04 74 00 00 20 45 4D 46
00 00 01 00 9C 06 00 00 20 00 00 00 02 00 00 00
0C 00 00 00 6C 00 00 00 00 00 00 00 5E 13 00 00
68 1B 00 00 D2 00 00 00 29 01 00 00 00 00 00 00
00 00 00 00 00 00 00 00 EF 33 03 00 28 88 04 00
50 00 72 00 69 00 6E 00 74 00 20 00 74 00 65 00
73 00 74 00 00 00 00 00 25 00 00 00 0C 00 00 00
07 00 00 80 25 00 00 00 0C 00 00 00 00 00 00 80
52 00 00 00 70 01 00 00 01 00 00 00 9C FF FF FF
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 8B 5B 53 4F 00 00 69 00
64 00 61 00 20 00 43 00 6F 00 6E 00 73 00 6F 00
6C 00 65 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
00 00 00 00 CE 11 A1 FB FE 07 00 00 00 00 00 00
00 00 00 00 82 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 82 00 00 00 00 00 00 00 4A 04 04 00
00 00 00 00 C0 84 6D 77 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
00 00 00 00 31 75 6D 77 00 00 00 00 40 13 C7 01
00 00 00 00 C0 84 6D 77 00 00 00 00 98 13 C7 01
00 00 00 00 11 A9 00 00 00 00 00 00 C0 9C 7F 00
00 00 00 00 00 00 00 00 00 00 00 00 3C 12 00 00
00 00 00 00 ED 6B 6D 77 00 00 00 00 00 00 00 00
00 00 00 00 4A 04 04 00 00 00 00 00 4A 04 04 00
00 00 00 00 4A 04 04 00 00 00 00 00 E3 F7 11 77
00 00 00 00 D2 89 A1 FB FE 07 00 00 33 D6 35 FD
FE 07 00 00 00 00 00 00 00 00 00 00 23 D6 35 FD
FE 07 00 00 BB 22 34 FE FE 07 00 00 93 F4 11 77
00 00 00 00 46 B4 A3 FD 64 76 00 08 00 00 00 00
25 00 00 00 0C 00 00 00 01 00 00 00 12 00 00 00
0C 00 00 00 01 00 00 00 1B 00 00 00 10 00 00 00
00 00 00 00 00 00 00 00 0D 00 00 00 10 00 00 00
00 00 00 00 00 00 00 00 62 00 00 00 0C 00 00 00
01 00 00 00 64 00 00 00 0C 00 00 00 14 00 00 80
6D 00 00 00 10 00 00 00 DD EE EB 05 01 00 00 00
77 00 00 00 34 00 00 00 04 00 00 00 DB 14 0C E9
01 00 00 00 D4 87 3C 0A 03 00 00 00 35 46 E5 14
03 00 00 00 01 D0 22 88 01 00 00 00 00 00 00 00
00 00 00 00 54 00 00 00 70 00 00 00 83 08 00 00
4F 02 00 00 DA 0A 00 00 B2 02 00 00 01 00 00 00
DD 89 87 40 39 76 87 40 83 08 00 00 4F 02 00 00
06 00 00 00 4C 00 00 00 00 10 00 00 00 00 00 00
00 00 00 00 FF FF FF FF FF FF FF FF 58 00 00 00
B0 65 FA 5E 87 65 2C 67 87 65 63 68 64 00 00 00
64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00
64 00 00 00 1E 00 00 00 18 00 00 00 D8 01 00 00
C1 02 00 00 86 11 00 00 A8 18 00 00 16 00 00 00
0C 00 00 00 01 00 00 00 12 00 00 00 0C 00 00 00
01 00 00 00 1B 00 00 00 10 00 00 00 00 00 00 00
00 00 00 00 77 00 00 00 34 00 00 00 04 00 00 00
DB 14 0C E9 01 00 00 00 D4 87 3C 0A 03 00 00 00
35 46 E5 14 03 00 00 00 01 D0 22 88 01 00 00 00
00 00 00 00 00 00 00 00 54 00 00 00 54 00 00 00
00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF
01 00 00 00 DD 89 87 40 39 76 87 40 D8 01 00 00
C1 02 00 00 01 00 00 00 4C 00 00 00 04 10 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50 00 00 00 20 00 00 00 58 02 00 00 16 00 00 00
0C 00 00 00 00 00 00 00 77 00 00 00 34 00 00 00
04 00 00 00 DB 14 0C E9 01 00 00 00 D4 87 3C 0A
03 00 00 00 35 46 E5 14 03 00 00 00 01 D0 22 88
01 00 00 00 00 00 00 00 00 00 00 00 54 00 00 00
60 00 00 00 D8 01 00 00 C1 02 00 00 6D 02 00 00
24 03 00 00 01 00 00 00 DD 89 87 40 39 76 87 40
D8 01 00 00 C1 02 00 00 03 00 00 00 4C 00 00 00
00 10 00 00 00 00 00 00 00 00 00 00 FF FF FF FF
FF FF FF FF 54 00 00 00 68 00 67 00 75 00 00 00
32 00 00 00 32 00 00 00 32 00 00 00 77 00 00 00
34 00 00 00 04 00 00 00 DB 14 0C E9 01 00 00 00
D4 87 3C 0A 03 00 00 00 35 46 E5 14 03 00 00 00
01 D0 22 88 01 00 00 00 00 00 00 00 00 00 00 00
54 00 00 00 6C 00 00 00 6E 02 00 00 C1 02 00 00
2F 04 00 00 24 03 00 00 01 00 00 00 DD 89 87 40
39 76 87 40 6E 02 00 00 C1 02 00 00 05 00 00 00
4C 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00
FF FF FF FF FF FF FF FF 58 00 00 00 90 96 90 96
A6 7E A6 7E 30 00 00 00 64 00 00 00 64 00 00 00
64 00 00 00 64 00 00 00 32 00 00 00 1B 00 00 00
10 00 00 00 00 00 00 00 00 00 00 00 16 00 00 00
0C 00 00 00 00 00 00 00 77 00 00 00 34 00 00 00
04 00 00 00 DB 14 0C E9 01 00 00 00 D4 87 3C 0A
03 00 00 00 35 46 E5 14 03 00 00 00 01 D0 22 88
01 00 00 00 00 00 00 00 00 00 00 00 54 00 00 00
70 00 00 00 D8 01 00 00 D5 07 00 00 2F 04 00 00
38 08 00 00 01 00 00 00 DD 89 87 40 39 76 87 40
D8 01 00 00 D5 07 00 00 06 00 00 00 4C 00 00 00
00 10 00 00 00 00 00 00 00 00 00 00 FF FF FF FF
FF FF FF FF 58 00 00 00 CF 7E 4E 6D 4C 75 CF 7E
4E 6D 4C 75 64 00 00 00 64 00 00 00 64 00 00 00
64 00 00 00 64 00 00 00 64 00 00 00 4B 00 00 00
10 00 00 00 00 00 00 00 05 00 00 00 77 00 00 00
34 00 00 00 04 00 00 00 DB 14 0C E9 01 00 00 00
D4 87 3C 0A 03 00 00 00 35 46 E5 14 03 00 00 00
01 D0 22 88 01 00 00 00 00 00 00 00 00 00 00 00
54 00 00 00 6C 00 00 00 00 09 00 00 A8 18 00 00
5D 0A 00 00 0B 19 00 00 01 00 00 00 DD 89 87 40
39 76 87 40 00 09 00 00 A8 18 00 00 05 00 00 00
4C 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00
FF FF FF FF FF FF FF FF 58 00 00 00 2C 7B 20 00
31 00 20 00 75 98 00 00 64 00 00 00 32 00 00 00
32 00 00 00 32 00 00 00 64 00 00 00 0E 00 00 00
14 00 00 00 00 00 00 00 10 00 00 00 14 00 00 00
0E 00 00 00 08 00 00 00 A4 06 00 00 00 00 00 00
0C 00 00 00 48 05 00 00 01 00 00 00 84 00 00 00
D8 01 00 00 4F 02 00 00 DA 0A 00 00 0B 19 00 00
00 00 00 00 00 00 00 00 08 52 00 00 04 74 00 00
20 45 4D 46 00 00 01 00 48 05 00 00 16 00 00 00
02 00 00 00 0C 00 00 00 6C 00 00 00 00 00 00 00
5E 13 00 00 68 1B 00 00 D2 00 00 00 29 01 00 00
00 00 00 00 00 00 00 00 00 00 00 00 EF 33 03 00
28 88 04 00 50 00 72 00 69 00 6E 00 74 00 20 00
74 00 65 00 73 00 74 00 00 00 00 00 25 00 00 00
0C 00 00 00 07 00 00 80 25 00 00 00 0C 00 00 00
00 00 00 80 52 00 00 00 70 01 00 00 01 00 00 00
9C FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 8B 5B 53 4F
00 00 69 00 64 00 61 00 20 00 43 00 6F 00 6E 00
73 00 6F 00 6C 00 65 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01 00 00 00 00 00 00 00 CE 11 A1 FB FE 07 00 00
00 00 00 00 00 00 00 00 82 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 82 00 00 00 00 00 00 00
4A 04 04 00 00 00 00 00 C0 84 6D 77 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01 00 00 00 00 00 00 00 31 75 6D 77 00 00 00 00
40 13 C7 01 00 00 00 00 C0 84 6D 77 00 00 00 00
98 13 C7 01 00 00 00 00 11 A9 00 00 00 00 00 00
C0 9C 7F 00 00 00 00 00 00 00 00 00 00 00 00 00
3C 12 00 00 00 00 00 00 ED 6B 6D 77 00 00 00 00
00 00 00 00 00 00 00 00 4A 04 04 00 00 00 00 00
4A 04 04 00 00 00 00 00 4A 04 04 00 00 00 00 00
E3 F7 11 77 00 00 00 00 D2 89 A1 FB FE 07 00 00
33 D6 35 FD FE 07 00 00 00 00 00 00 00 00 00 00
23 D6 35 FD FE 07 00 00 BB 22 34 FE FE 07 00 00
93 F4 11 77 00 00 00 00 46 B4 A3 FD 64 76 00 08
00 00 00 00 25 00 00 00 0C 00 00 00 01 00 00 00
12 00 00 00 0C 00 00 00 01 00 00 00 1B 00 00 00
10 00 00 00 00 00 00 00 00 00 00 00 0D 00 00 00
10 00 00 00 00 00 00 00 00 00 00 00 62 00 00 00
0C 00 00 00 01 00 00 00 64 00 00 00 0C 00 00 00
14 00 00 80 6D 00 00 00 10 00 00 00 DD EE EB 05
01 00 00 00 77 00 00 00 34 00 00 00 04 00 00 00
DB 14 0C E9 01 00 00 00 D4 87 3C 0A 03 00 00 00
35 46 E5 14 03 00 00 00 01 D0 22 88 01 00 00 00
00 00 00 00 00 00 00 00 54 00 00 00 70 00 00 00
83 08 00 00 4F 02 00 00 DA 0A 00 00 B2 02 00 00
01 00 00 00 DD 89 87 40 39 76 87 40 83 08 00 00
4F 02 00 00 06 00 00 00 4C 00 00 00 00 10 00 00
00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF
58 00 00 00 B0 65 FA 5E 87 65 2C 67 87 65 63 68
64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00
64 00 00 00 64 00 00 00 1E 00 00 00 18 00 00 00
D8 01 00 00 C1 02 00 00 86 11 00 00 A8 18 00 00
77 00 00 00 34 00 00 00 04 00 00 00 DB 14 0C E9
01 00 00 00 D4 87 3C 0A 03 00 00 00 35 46 E5 14
03 00 00 00 01 D0 22 88 01 00 00 00 00 00 00 00
00 00 00 00 54 00 00 00 7C 00 00 00 D8 01 00 00
C9 09 00 00 F7 04 00 00 2C 0A 00 00 01 00 00 00
DD 89 87 40 39 76 87 40 D8 01 00 00 C9 09 00 00
08 00 00 00 4C 00 00 00 00 10 00 00 00 00 00 00
00 00 00 00 FF FF FF FF FF FF FF FF 5C 00 00 00
CF 7E 4E 6D 4C 75 CF 7E 4E 6D 4C 75 CF 7E 4E 6D
64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00
64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00
77 00 00 00 34 00 00 00 04 00 00 00 DB 14 0C E9
01 00 00 00 D4 87 3C 0A 03 00 00 00 35 46 E5 14
03 00 00 00 01 D0 22 88 01 00 00 00 00 00 00 00
00 00 00 00 54 00 00 00 78 00 00 00 D8 01 00 00
41 0F 00 00 93 04 00 00 A4 0F 00 00 01 00 00 00
DD 89 87 40 39 76 87 40 D8 01 00 00 41 0F 00 00
07 00 00 00 4C 00 00 00 00 10 00 00 00 00 00 00
00 00 00 00 FF FF FF FF FF FF FF FF 5C 00 00 00
CF 7E 4E 6D 4C 75 A4 65 A4 65 A1 8B 83 8F 00 00
64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00
64 00 00 00 64 00 00 00 64 00 00 00 4B 00 00 00
10 00 00 00 00 00 00 00 05 00 00 00 77 00 00 00
34 00 00 00 04 00 00 00 DB 14 0C E9 01 00 00 00
D4 87 3C 0A 03 00 00 00 35 46 E5 14 03 00 00 00
01 D0 22 88 01 00 00 00 00 00 00 00 00 00 00 00
54 00 00 00 6C 00 00 00 00 09 00 00 A8 18 00 00
5D 0A 00 00 0B 19 00 00 01 00 00 00 DD 89 87 40
39 76 87 40 00 09 00 00 A8 18 00 00 05 00 00 00
4C 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00
FF FF FF FF FF FF FF FF 58 00 00 00 2C 7B 20 00
32 00 20 00 75 98 00 00 64 00 00 00 32 00 00 00
32 00 00 00 32 00 00 00 64 00 00 00 0E 00 00 00
14 00 00 00 00 00 00 00 10 00 00 00 14 00 00 00
0E 00 00 00 08 00 00 00 50 05 00 00 00 00 00 00
dwVersion:00010000-00000003
cjSize:0000003C-00000007
dpszDocName:00000010-0000000B
dpszOutput:0000002A-0000000F
新建文本文档 - 记事本
ulID:0000000C-0000003F
cjSize:0000069C-00000043
Type:00000001-00000047
Size:00000084-0000004B
Bounds1:000001D8-0000004F
Bounds2:0000024F-00000053
Bounds3:00000ADA-00000058
Bounds4:0000190B-0000005C
Frame1:00000000-00000060
Frame2:00000000-00000064
Frame3:00005208-00000068
Frame4:00007404-0000006C
Signature:464D4520-00000070
Version:00010000-00000074
Bytes:0000069C-00000078
Records:00000020-0000007C
HandlesReserved:00000002-00000080
nDescription:0000000C-00000084
offDescription:0000006C-00000088
nPalEntries:00000000-0000008C
Device1:0000135E-00000090
Device2:00001B68-00000094
Millimeters1:000000D2-00000098
Millimeters2:00000129-0000009C
cbPixelFormat:00000000-000000A0
offPixelFormat:00000000-000000A4
bOpenGL:00000000-000000A8
MicrometersX:000333EF-000000AC
MicrometersY:00048828-000000B0
EmfDescription:Print test
This is record0
Type:00000025-000000CC
Size:0000000C-000000D0
RecordContent:耀
This is record1
Type:00000025-000000D8
Size:0000000C-000000DC
RecordContent:
This is record2
Type:00000052-000000E4
Size:00000170-000000E8
RecordContent:???宋体体ida Consoleda Consolea Console ConsoleConsoleonsolensolesoleolelee????????ъ蓀睭睭由睭睭??? 蓀睭睭????鳀?毭睭睭ъъъ?眑眑角??????????????????︴?︴???眑眑??癤??癤?癤?
This is record3
Type:00000025-00000243
Size:0000000C-00000247
RecordContent:
This is record4
Type:00000012-0000024F
Size:0000000C-00000253
RecordContent:
This is record5
Type:0000001B-0000025B
Size:00000010-0000025F
RecordContent:
This is record6
Type:0000000D-0000026B
Size:00000010-0000026F
RecordContent:
This is record7
Type:00000062-0000027B
Size:0000000C-0000027F
RecordContent:
This is record8
Type:00000064-00000287
Size:0000000C-0000028B
RecordContent:耀
This is record9
Type:0000006D-00000293
Size:00000010-00000297
RecordContent:???
This is record10
Type:00000077-000002A3
Size:00000034-000002A7
RecordContent:???蟔??????蠢蠢
This is record11
Type:00000054-000002D8
Size:00000070-000002DC
RecordContent:????觝?瘹???瘹??瘹??????L?????X???X??X?XX新建文本文档d建文本文档d文本文档d本文档d文档d档dddddd
This is a content record.
Bounds1:00000883
Bounds2:0000024F
Bounds3:00000ADA
Bounds4:000002B2
iGraphicsMode:00000001
exScale:000089DD
eyScale:00007639
Reference1:00000883
Reference2:0000024F
Chars:00000006
offString:0000004C
Options:00001000
Rectangle1:00000000
Rectangle2:00000000
Rectangle3:0000FFFF
Rectangle4:0000FFFF
offDx:00000058
Content:新建文本文档d
This is record12
Type:0000001E-00000349
Size:00000018-0000034D
RecordContent:ǘ??
This is record13
Type:00000016-00000361
Size:0000000C-00000365
RecordContent:
This is record14
Type:00000012-0000036D
Size:0000000C-00000371
RecordContent:
This is record15
Type:0000001B-00000379
Size:00000010-0000037D
RecordContent:
This is record16
Type:00000077-00000389
Size:00000034-0000038D
RecordContent:???蟔??????蠢蠢
This is record17
Type:00000054-000003BE
Size:00000054-000003C2
RecordContent:??????????觝?瘹?ǘ?瘹?ǘ瘹?ǘ?ǘǘ?L?P
This is a content record.
Bounds1:00000000
Bounds2:00000000
Bounds3:0000FFFF
Bounds4:0000FFFF
iGraphicsMode:00000001
exScale:000089DD
eyScale:00007639
Reference1:000001D8
Reference2:000002C1
Chars:00000001
offString:0000004C
Options:00001004
Rectangle1:00000000
Rectangle2:00000000
Rectangle3:00000000
Rectangle4:00000000
offDx:00000050
Content:
This is record18
Type:00000016-00000412
Size:0000000C-00000416
RecordContent:
This is record19
Type:00000077-0000041E
Size:00000034-00000422
RecordContent:???蟔??????蠢蠢
This is record20
Type:00000054-00000453
Size:00000060-00000457
RecordContent:ǘ???觝?瘹?ǘ?瘹?ǘ瘹?ǘ?ǘǘ?L?????T???T??T?TThguguu22
This is a content record.
Bounds1:000001D8
Bounds2:000002C1
Bounds3:0000026D
Bounds4:00000324
iGraphicsMode:00000001
exScale:000089DD
eyScale:00007639
Reference1:000001D8
Reference2:000002C1
Chars:00000003
offString:0000004C
Options:00001000
Rectangle1:00000000
Rectangle2:00000000
Rectangle3:0000FFFF
Rectangle4:0000FFFF
offDx:00000054
Content:hgu
This is record21
Type:00000077-000004B3
Size:00000034-000004B7
RecordContent:???蟔??????蠢蠢
This is record22
Type:00000054-000004E8
Size:0000006C-000004EC
RecordContent:??Я?觝?瘹???瘹??瘹??????L?????X???X??X?XX隐隐约约0隐约约0约约0约00dddd
This is a content record.
Bounds1:0000026E
Bounds2:000002C1
Bounds3:0000042F
Bounds4:00000324
iGraphicsMode:00000001
exScale:000089DD
eyScale:00007639
Reference1:0000026E
Reference2:000002C1
Chars:00000005
offString:0000004C
Options:00001000
Rectangle1:00000000
Rectangle2:00000000
Rectangle3:0000FFFF
Rectangle4:0000FFFF
offDx:00000058
Content:隐隐约约0
This is record23
Type:0000001B-00000554
Size:00000010-00000558
RecordContent:
This is record24
Type:00000016-00000564
Size:0000000C-00000568
RecordContent:
This is record25
Type:00000077-00000570
Size:00000034-00000574
RecordContent:???蟔??????蠢蠢
This is record26
Type:00000054-000005A5
Size:00000070-000005A9
RecordContent:ǘ?Я?觝?瘹?ǘ?瘹?ǘ瘹?ǘ?ǘǘ?L?????X???X??X?XX经济界经济界d济界经济界d界经济界d经济界d济界d界dddddd
This is a content record.
Bounds1:000001D8
Bounds2:000007D5
Bounds3:0000042F
Bounds4:00000838
iGraphicsMode:00000001
exScale:000089DD
eyScale:00007639
Reference1:000001D8
Reference2:000007D5
Chars:00000006
offString:0000004C
Options:00001000
Rectangle1:00000000
Rectangle2:00000000
Rectangle3:0000FFFF
Rectangle4:0000FFFF
offDx:00000058
Content:经济界经济界d
This is record27
Type:0000004B-00000615
Size:00000010-00000619
RecordContent:
This is record28
Type:00000077-00000625
Size:00000034-00000629
RecordContent:???蟔??????蠢蠢
This is record29
Type:00000054-0000065A
Size:0000006C-0000065E
RecordContent:????觝?瘹???瘹??瘹??????L?????X???X??X?XX第 1 页 1 页1 页 页页d222
This is a content record.
Bounds1:00000900
Bounds2:000018A8
Bounds3:00000A5D
Bounds4:0000190B
iGraphicsMode:00000001
exScale:000089DD
eyScale:00007639
Reference1:00000900
Reference2:000018A8
Chars:00000005
offString:0000004C
Options:00001000
Rectangle1:00000000
Rectangle2:00000000
Rectangle3:0000FFFF
Rectangle4:0000FFFF
offDx:00000058
Content:第 1 页
This is record30
Type:0000000E-000006C7
Size:00000014-000006CB
RecordContent:
This is record31
Type:0000000E-000006DB
Size:00000008-000006DF
RecordContent:
tail1:000006A4-000006E3
tail2:00000000-000006E7
ulID:0000000C-000006EB
cjSize:00000548-000006EF
Type:00000001-000006F3
Size:00000084-000006F7
Bounds1:000001D8-000006FB
Bounds2:0000024F-000006FF
Bounds3:00000ADA-00000704
Bounds4:0000190B-00000708
Frame1:00000000-0000070C
Frame2:00000000-00000710
Frame3:00005208-00000714
Frame4:00007404-00000718
Signature:464D4520-0000071C
Version:00010000-00000720
Bytes:00000548-00000724
Records:00000016-00000728
HandlesReserved:00000002-0000072C
nDescription:0000000C-00000730
offDescription:0000006C-00000734
nPalEntries:00000000-00000738
Device1:0000135E-0000073C
Device2:00001B68-00000740
Millimeters1:000000D2-00000744
Millimeters2:00000129-00000748
cbPixelFormat:00000000-0000074C
offPixelFormat:00000000-00000750
bOpenGL:00000000-00000754
MicrometersX:000333EF-00000758
MicrometersY:00048828-0000075C
EmfDescription:Print test
This is record0
Type:00000025-00000778
Size:0000000C-0000077C
RecordContent:耀
This is record1
Type:00000025-00000784
Size:0000000C-00000788
RecordContent:
This is record2
Type:00000052-00000790
Size:00000170-00000794
RecordContent:???宋体体ida Consoleda Consolea Console ConsoleConsoleonsolensolesoleolelee????????ъ蓀睭睭由睭睭??? 蓀睭睭????鳀?毭睭睭ъъъ?眑眑角??????????????????︴?︴???眑眑??癤??癤?癤?
This is record3
Type:00000025-00000900
Size:0000000C-00000904
RecordContent:
This is record4
Type:00000012-0000090C
Size:0000000C-00000910
RecordContent:
This is record5
Type:0000001B-00000918
Size:00000010-0000091C
RecordContent:
This is record6
Type:0000000D-00000928
Size:00000010-0000092C
RecordContent:
This is record7
Type:00000062-00000938
Size:0000000C-0000093C
RecordContent:
This is record8
Type:00000064-00000944
Size:0000000C-00000948
RecordContent:耀
This is record9
Type:0000006D-00000950
Size:00000010-00000954
RecordContent:???
This is record10
Type:00000077-00000960
Size:00000034-00000964
RecordContent:???蟔??????蠢蠢
This is record11
Type:00000054-00000995
Size:00000070-00000999
RecordContent:????觝?瘹???瘹??瘹??????L?????X???X??X?XX新建文本文档d建文本文档d文本文档d本文档d文档d档dddddd
This is a content record.
Bounds1:00000883
Bounds2:0000024F
Bounds3:00000ADA
Bounds4:000002B2
iGraphicsMode:00000001
exScale:000089DD
eyScale:00007639
Reference1:00000883
Reference2:0000024F
Chars:00000006
offString:0000004C
Options:00001000
Rectangle1:00000000
Rectangle2:00000000
Rectangle3:0000FFFF
Rectangle4:0000FFFF
offDx:00000058
Content:新建文本文档d
This is record12
Type:0000001E-00000A06
Size:00000018-00000A0A
RecordContent:ǘ??
This is record13
Type:00000077-00000A1E
Size:00000034-00000A22
RecordContent:???蟔??????蠢蠢
This is record14
Type:00000054-00000A53
Size:0000007C-00000A57
RecordContent:ǘ???觝?瘹?ǘ?瘹?ǘ瘹?ǘ?ǘǘL?????\???\??\?\\经济界经济界经济d济界经济界经济d界经济界经济d经济界经济d济界经济d界经济d经济d济dddddddd
This is a content record.
Bounds1:000001D8
Bounds2:000009C9
Bounds3:000004F7
Bounds4:00000A2C
iGraphicsMode:00000001
exScale:000089DD
eyScale:00007639
Reference1:000001D8
Reference2:000009C9
Chars:00000008
offString:0000004C
Options:00001000
Rectangle1:00000000
Rectangle2:00000000
Rectangle3:0000FFFF
Rectangle4:0000FFFF
offDx:0000005C
Content:经济界经济界经济d
This is record15
Type:00000077-00000AD0
Size:00000034-00000AD4
RecordContent:???蟔??????蠢蠢
This is record16
Type:00000054-00000B05
Size:00000078-00000B09
RecordContent:ǘ???觝?瘹?ǘ?瘹?ǘ瘹?ǘ?ǘǘ?L?????\???\??\?\\经济界斤斤计较济界斤斤计较界斤斤计较斤斤计较斤计较计较较dddddd
This is a content record.
Bounds1:000001D8
Bounds2:00000F41
Bounds3:00000493
Bounds4:00000FA4
iGraphicsMode:00000001
exScale:000089DD
eyScale:00007639
Reference1:000001D8
Reference2:00000F41
Chars:00000007
offString:0000004C
Options:00001000
Rectangle1:00000000
Rectangle2:00000000
Rectangle3:0000FFFF
Rectangle4:0000FFFF
offDx:0000005C
Content:经济界斤斤计较
This is record17
Type:0000004B-00000B7D
Size:00000010-00000B81
RecordContent:
This is record18
Type:00000077-00000B8D
Size:00000034-00000B91
RecordContent:???蟔??????蠢蠢
This is record19
Type:00000054-00000BC2
Size:0000006C-00000BC6
RecordContent:????觝?瘹???瘹??瘹??????L?????X???X??X?XX第 2 页 2 页2 页 页页d222
This is a content record.
Bounds1:00000900
Bounds2:000018A8
Bounds3:00000A5D
Bounds4:0000190B
iGraphicsMode:00000001
exScale:000089DD
eyScale:00007639
Reference1:00000900
Reference2:000018A8
Chars:00000005
offString:0000004C
Options:00001000
Rectangle1:00000000
Rectangle2:00000000
Rectangle3:0000FFFF
Rectangle4:0000FFFF
offDx:00000058
Content:第 2 页
This is record20
Type:0000000E-00000C2F
Size:00000014-00000C33
RecordContent:
This is record21
Type:0000000E-00000C43
Size:00000008-00000C47
RecordContent:
tail1:00000550-00000C4B
tail2:00000000-00000C4F
此文原创,引用请标明出处
大砂怪★: 想请问一下在win10中,我把后缀改为zip就说格式被损坏无法打开这种情况怎么办
qq_35044969: 时间搓实现那个是放节流吧
m0_67020338: 付费咨询技术问题,麻烦加一下v:chrz-2
GodKK老神灭: 你好
大家一起学编程(python): 学到了