예제 #1
0
 //public DeviceMode Devmode;
 public EMRI_DEVMODERecord(DataRecord dataRecord)
     : base(dataRecord)
 {
 }
예제 #2
0
 public PageContentRecord(DataRecord dataRecord)
     : base(dataRecord)
 {
 }
예제 #3
0
 public PageOffsetRecord(DataRecord dataRecord)
     : base(dataRecord)
 {
 }
예제 #4
0
 public DataRecord(DataRecord dataRecord)
 {
     this.ulID   = dataRecord.ulID;
     this.cjSize = dataRecord.cjSize;
 }
예제 #5
0
        }         // ParseHeaderRecord

        private void ParseDataRecords()
        {
            long lSplLen = this.binaryReader.BaseStream.Length;

            while (true)
            {
                long pos = this.binaryReader.BaseStream.Position;
                if (pos >= lSplLen)
                {
                    break;
                }

                uint ulID = this.binaryReader.ReadUInt32();
                if (ulID == 0x00000000)
                {
                    //Don't know why. Sometimes 0x0 is too early.
                    //So we need read it again.
                    ulID = this.binaryReader.ReadUInt32();
                }
                var dataRecord = new DataRecord();
                dataRecord.ulID   = ulID;
                dataRecord.cjSize = this.binaryReader.ReadUInt32();
                if (dataRecord.cjSize == 0)
                {
                    break;                     // 垃圾数据.
                }
                if (!Enum.IsDefined(typeof(RecordType), dataRecord.ulID))
                {
                    this.binaryReader.ReadBytes((int)dataRecord.cjSize);                     // Read unknown data block
                    continue;
                }
                switch (dataRecord.ulID)
                {
                case (uint)RecordType.EMRI_METAFILE:
                {
                    var pageContentRecord = new PageContentRecord(dataRecord);
                    pageContentRecord.EmfMetaFile = this.binaryReader.ReadBytes((int)pageContentRecord.cjSize);
                    SaveImg(pageContentRecord);
                }
                break;

                case (uint)RecordType.EMRI_ENGINE_FONT:
                    break;

                case (uint)RecordType.EMRI_DEVMODE:
                {
                    var    devmodeRecord = new EMRI_DEVMODERecord(dataRecord);
                    byte[] buffer        = this.binaryReader.ReadBytes((int)dataRecord.cjSize);
                    //this.deviceMode = new DeviceMode(new DEVMODE(buffer));
                    //devmodeRecord.Devmode = this.deviceMode;
                    //dataRecords.Add(devmodeRecord);
                    //SaveImg(devmodeRecord);
                }
                break;

                case (uint)RecordType.EMRI_METAFILE_DATA:
                {
                    var pageContentRecord = new PageContentRecord(dataRecord);
                    pageContentRecord.EmfMetaFile = this.binaryReader.ReadBytes((int)dataRecord.cjSize);
                    //dataRecords.Add(pageContentRecord);
                    SaveImg(pageContentRecord);
                }
                break;

                case (uint)RecordType.EMRI_METAFILE_EXT:
                case (uint)RecordType.EMRI_BW_METAFILE_EXT:
                {
                    var pageOffsetRecord = new PageOffsetRecord(dataRecord);
                    var offsets          = new ulong[pageOffsetRecord.cjSize / sizeof(ulong)];
                    for (int i = 0; i < offsets.Length; i++)
                    {
                        offsets[i] = this.binaryReader.ReadUInt64();
                    }
                    //dataRecords.Add(pageOffsetRecord);
                    SaveImg(pageOffsetRecord);
                }
                break;

                case (uint)RecordType.EMRI_TYPE1_FONT:
                    break;

                case (uint)RecordType.EMRI_PRESTARTPAGE:
                    break;

                case (uint)RecordType.EMRI_DESIGNVECTOR:
                    break;

                case (uint)RecordType.EMRI_SUBSET_FONT:
                    break;

                case (uint)RecordType.EMRI_DELTA_FONT:
                    break;

                case (uint)RecordType.EMRI_FORM_METAFILE:
                    break;

                case (uint)RecordType.EMRI_BW_METAFILE:
                    break;

                case (uint)RecordType.EMRI_BW_FORM_METAFILE:
                    break;

                case (uint)RecordType.EMRI_ENGINE_FONT_EXT:
                    break;

                case (uint)RecordType.EMRI_TYPE1_FONT_EXT:
                    break;

                case (uint)RecordType.EMRI_DESIGNVECTOR_EXT:
                    break;

                case (uint)RecordType.EMRI_SUBSET_FONT_EXT:
                    break;

                case (uint)RecordType.EMRI_DELTA_FONT_EXT:
                    break;

                case (uint)RecordType.EMRI_PS_JOB_DATA:
                    break;

                case (uint)RecordType.EMRI_EMBED_FONT_EXT:
                    break;
                } // switch
            }     // while
        }         // ParseDataRecords