SPL 文件解析

8 篇文章 1 订阅
订阅专栏

进来有对于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

此文原创,引用请标明出处

SPL 解析及导出 Excel
Raqsoft
06-17 955
SPL 读写文件
Raqsoft
06-07 1157
本文介绍SPL读写文本文件和Excel文件的基本方法,包括简单的文件目录操作。 文本文件 读写结构化文本 结构化文本的格式比较规范,即每行一条记录,列之间用分隔符区分。SPL可用import/export函数读写结构化文本。 比如:ordersNT.txt存储订单记录,列之间用制表符tab分隔,业务意义依次为:订单ID、客户编号、销售ID、订单金额、订单日期。部分数据如下: 26 TAS 1 2142.4 2009-08-0533 DSGC 1 613.2 2009-08-1484 GC 1 88
spl文件查看器.zip
09-29
spl文件查看器,免安装,可以预览windows打印文件spl格式(打印机设置保存已打印文件
打印机中的SPL 文件详解
qq_34934140的博客
05-22 3683
SPL(Spool)文件是用于存储打印作业的临时文件,包含了完整的打印数据流,包括PJL命令和打印数据
注解解析SPEL表达式完成切面
最新发布
qq_27863515的博客
06-24 169
【代码】注解解析SPL表达式完成切面。
打印
u012709815的专栏
09-26 1485
打印信息监控——打印文件spl分析 在windows的打印过程中,会生成中间的打印文件,在该文件中存储着打印页面的emf图源文件,通过该文件即可知道即将打印的内容。   Windows的假脱机打印会在Windows\System32\spool\PRINERS目录下生成.spl和.shd文件,其中的打印内容存贮在.spl文件中,但是.spl文件格式似乎未公开,那么如何才能将未知的.spl
打印缓存SPL文件查看转换工具
05-26
预览,打印和保存Windows假脱机文件SPL文件扩展名) 会帮助您: 您打印许多页面的文档,并希望重新打印由卡纸引起的丢失页面 您打算将应用程序的打印内容,输出并保存成可用的文件。 您想要使用打印的输出作为Word,Powerpoint,PDF中的文档的一部分. (只需将实际页面复制到剪贴板,并以EMF格式将其插入目标程序,或者本地打印成PDF文件,进行转换)。EMF文件只能保存当前看的页,如果想都保存,那么打印到PDF文件,非常好用。 您想要一个简单的包括过滤器的打印作业管理。
SPL 文件处理
dibei0863的博客
05-28 337
SPL中定义了一些处理文件、目录的类。首先认识一下SplFileInfo类,该类是通过文件引用来创建对象: $file = new SplFileInfo('data.txt'); 创建对象后,我们就可以调用他的各种方法来获取文件有关信息: getBasename() //获得文件名 (eg: data.txt) getExtension() //获得扩展名 (eg: .txt)...
打印监控 spl文件解析成emf文件
02-14
打印文件中的spl文件解析成可用的emf文件源码,用于打印监控相关。
spl文件处理
weixin_30622181的博客
03-11 195
spl是php标准库的缩写 spl文件处理类库: SplFileInfo //是一个类用以获取文件的各种信息SplFileInfo的所有方法如下 方法名 - --- 说明2. getATime( ) : --- Gets last access time of the file3. getBasename( ) : --- Gets the base...
spl文件解析 c++
07-21
总而言之,spl文件解析是指读取和理解Splunk搜索语言(SPL)编写的查询或报告的内容,以便在Splunk软件中进行相应的数据分析和操作。通过spl文件解析,用户可以利用Splunk功能来处理和分析大量的数据,并从中获得更...
SPL文件查看器,用于打开spl文件
05-13
SPL是windows系统下打印机时产生的一种假脱机文件,如果在打印时出现页面丢失或者卡死的问题,打印页面就会丢失,而使用SPLView可以对spl文件进行查看,或者将其转换为Word、Powerpoint以及pdf等文档,欢迎有需要此款工具的朋友们前来下载使用。
C# 将打印机临时缓存文件SPL转为图片文件EMF
11-12
打印机临时缓存文件SPL转为图片文件EMF
决战SPL查看器
06-24
决战决战SPL查看器
SPLView打印缓存SPL文件查看转换软件.rar
09-05
软件介绍: SPLView用于查看打印和保存Windows假脱机SPL文件。在打印时如果出现卡死或其他问题导致的打印页面丢失,你可以使用本工具将打印缓存转换输出为Word、Powerpoint或者PDF中的文档的一部分。只需将实际页面复制到剪贴板,并以EMF格式将其插入目标程序,或者本地打印成PDF文件,进行转换。
spltopdf转换工具
10-21
本工具用于将打印机自动保存的spl文件,再次转换成pdf文件
splparser:用Python编写的Splunk处理语言(SPL)的简单解析
05-15
该项目为Python中的Splunk处理语言(SPL)提供了一个简单的解析器。 它输出SPL查询的解析树。 它不一定要用作编译器的一部分。 它能够解析最常见的大约132个SPL命令中的66个。 拉请求欢迎。 联络人:Sara ...
SPL 全面剖析
anlei2455的博客
11-18 261
SPL 全面剖析 来自百度百科http://baike.baidu.com/view/1130234.htm?fr=aladdin SPL(Standard PHP Library) IN PHP5作者: 洪建家/Jiania E-mail:jiania@php.net笔者认为下一步中大型PHP商业应用的主流的开发将会是以OO,OA软件开发模式主领潮流,从PHP5到PHP6,goo...
C++ 打印机.spl
u012709815的专栏
09-30 1714
// dfdDlg.cpp : implementation file // #include "stdafx.h" #include "dfd.h" #include "dfdDlg.h" #include #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __
写文章

热门文章

  • C#中几种可以判断是值类型还是引用类型的方法 10114
  • Tensorflow 2.0 GPU显存爆炸打问题及释放内存打方法 8762
  • SPL 文件解析 7207
  • 什么是防抖和节流?有什么区别?如何实现? 6959
  • Pandas 显示所有列 5688

分类专栏

  • C++ 8篇
  • CSS 1篇
  • 前端面试题 3篇
  • Windows 1篇
  • Python 1篇
  • AI 1篇
  • 图形图像处理 2篇
  • 笔记
  • OCR
  • C# 5篇
  • PL/SQL
  • C#学习 2篇
  • WPF 1篇
  • Linux 3篇
  • 大数据
  • 软考
  • HTML 2篇
  • .NET 源码解析 2篇
  • Angularjs 1篇

最新评论

  • SPL 文件解析

    大砂怪★: 想请问一下在win10中,我把后缀改为zip就说格式被损坏无法打开这种情况怎么办

  • 什么是防抖和节流?有什么区别?如何实现?

    qq_35044969: 时间搓实现那个是放节流吧

  • SPL 文件解析

    m0_67020338: 付费咨询技术问题,麻烦加一下v:chrz-2

  • C++ 屏幕抓取代码及解析

    GodKK老神灭: 你好

  • Linux 环境变量

    大家一起学编程(python): 学到了

最新文章

  • WebAPI Controller 方法,无法命中问题
  • WPF 中获得为渲染控件的大小
  • WPF 避免设计状态下报错
2023年3篇
2022年1篇
2021年8篇
2020年9篇
2018年4篇
2017年6篇
2013年1篇
2011年7篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

天下网标王邯郸服务好的服装行业网站优化中卫关键词网站优化大型网站如何站外优化省心的机械行业网站优化技术平谷网站内容优化武威网站优化推广公司哪家专业惠州网站技术优化福州网站优化功能定制合肥蜀山区网站排名优化重庆网站关键词优化西安网站排名优化培训长沙网站关键词排名优化四川网站怎么优化禹州网站优化效果企业网站在优化时都需要做哪些谷歌优化网站推广奉贤区公司网站优化定制方案株洲网站排名优化公司海口网站优化实战淄博网站关键词优化哪家便宜大塘网站优化镇海区网站优化托管济源鹤壁网站优化寿光优化网站工具深圳企业网站推广优化汕头企业网站关键词优化技巧网站关键字优化公司青海优化网站建设苏州seo网站优化百度seo软件 百度网站优化香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化