|
WriteLn(Stream, ''''/FirstChar '''' + IntToStr(FirstChar)); WriteLn(Stream, ''''/LastChar '''' + IntToStr(LastChar)); GetMem(pwidths, SizeOf(ABCArray)); Write(Stream, ''''/Widths [''''); GetCharABCWidths(b.Canvas.Handle, FirstChar, LastChar, pwidths^); for i := 0 to (LastChar - FirstChar) do Write(Stream, IntToStr(pwidths^[i].abcA + Integer(pwidths^[i].abcB) + pwidths^[i].abcC) + '''' ''''); WriteLn(Stream, '''']''''); FreeMem(pwidths); WriteLn(Stream, ''''>>''''); WriteLn(Stream, ''''endobj''''); Parent.XRefAdd(Stream); WriteLn(Stream, IntToStr(Index + 1 + Parent.FStartFonts) + '''' 0 obj''''); WriteLn(Stream, ''''<<''''); WriteLn(Stream, ''''/Type /FontDescriptor''''); WriteLn(Stream, ''''/FontName /'''' + FontName); WriteLn(Stream, ''''/Flags 32''''); WriteLn(Stream, ''''/FontBBox ['''' + IntToStr(pm^.otmrcFontBox.Left) + '''' '''' + IntToStr(pm^.otmrcFontBox.Bottom) + '''' '''' + IntToStr(pm^.otmrcFontBox.Right) + '''' '''' + IntToStr(pm^.otmrcFontBox.Top) + '''' ]''''); WriteLn(Stream, ''''/ItalicAngle '''' + IntToStr(pm^.otmItalicAngle)); WriteLn(Stream, ''''/Ascent '''' + IntToStr(pm^.otmAscent)); WriteLn(Stream, ''''/Descent '''' + IntToStr(pm^.otmDescent)); WriteLn(Stream, ''''/Leading '''' + IntToStr(pm^.otmTextMetrics.tmInternalLeading)); //NEW WriteLn(Stream, ''''/CapHeight '''' + IntToStr(pm^.otmTextMetrics.tmHeight)); WriteLn(Stream, ''''/XHeight '''' + IntToStr(pm^.otmsXHeight)); //NEW WriteLn(Stream, ''''/StemV '''' + IntToStr(50 + Round(sqr(pm^.otmTextMetrics.tmWeight / 65)))); WriteLn(Stream, ''''/AvgWidth '''' + IntToStr(pm^.otmTextMetrics.tmAveCharWidth)); //NEW WriteLn(Stream, ''''/MaxWidth '''' + IntToStr(pm^.otmTextMetrics.tmMaxCharWidth)); //NEW WriteLn(Stream, ''''/MissingWidth '''' + IntToStr(pm^.otmTextMetrics.tmAveCharWidth)); //NEW if Parent.FEmbedded then WriteLn(Stream, ''''/FontFile2 '''' + IntToStr(Index + 2 + Parent.FStartFonts) + '''' 0 R''''); WriteLn(Stream, ''''>>''''); WriteLn(Stream, ''''endobj''''); end; if Parent.FEmbedded then begin Parent.XRefAdd(Stream); WriteLn(Stream, IntToStr(Index + 2 + Parent.FStartFonts) + '''' 0 obj''''); i := GetFontData(b.Canvas.Handle, 0, 0, nil, 1); GetMem(pfont, i); i := GetFontData(b.Canvas.Handle, 0, 0, pfont, i); MemStream := TMemoryStream.Create; MemStream.Write(pfont^, i); MemStream1 := TMemoryStream.Create; frxDeflateStream(MemStream, MemStream1, gzMax); WriteLn(Stream, ''''<< /Length '''' + IntToStr(MemStream1.Size) + '''' /Filter /FlateDecode /Length1 '''' + IntToStr(MemStream.Size) + '''' >>''''); WriteLn(Stream, ''''stream''''); Stream.CopyFrom(MemStream1, 0); MemStream1.Free; MemStream.Free; FreeMem(pfont); WriteLn(Stream, ''''''''); WriteLn(Stream, ''''endstream''''); WriteLn(Stream, ''''endobj''''); end; except end; finally FreeMem(pm); b.Free; end; end;
上一页 [1] [2] [3] [4] [聊天工具]遭Adobe反对 Office 2007被迫放弃PDF支持 [常用软件]AdobePDF存在危急漏洞殃及IE浏览器 [常用软件]CHM转换为PDF文件好轻松 [常用软件]ABC Amber CHM Converter:CHM转换PDF [JAVA开发]Java如何操作Word,Excel,PDF文档? [JAVA开发]Java抽取Office、PDF的四件兵器 [电脑技术]简单小技巧教你把PDF文档看个清清楚楚 [电脑技术]编辑PDF文档得力工具Foxit PDF Editor [Sql Server]T-SQL 存储过程创建 PDF 格式文件(报表)
|