浅谈PDFlib中文输出(五)-- 人工生成粗体及斜体字形

一般来说, 每种基本字体, 都会有在其基础上变化字形的附加字体。比如,字体Arial, 就有其附加字体Arial Bold (粗体), Arial Italic(斜体), 及Arial Bold Italic(粗斜体)。一般你都可以找到或购买到相应的附加字体。

但有时为了应急,或对字体字形没有非常严格的要求。在这样的情况下,我们可以采用人工字形生成(Artificial font styles)。Artificial font styles是Acrobat的一个功能,它根据基本字形而模拟生成粗体,斜体及粗斜体。PDFlib支持这一功能,并遵守Acrobat对此功能的限制。目前此功能之局限于:

1.Acrobat标准字体, 就简体中文来说也就是PDFlib自带的STSong-Light,AdobeSongStd-Light-Acro,及STSongStd-Light-Acro三种简体中文字体。

2.PDFlib可以访问的.otf OpenType字体,并使用表1.1的编码(见), 且“embedding”参数设为假。

下面是一个相关的例子--C 源程序(附上生成的pdf文件 –PDFlib_cs5.pdf)。

/*******************************************************************/
/* This example demostrates the usage of Artificial font styles
/* under Chinese Simplifed Windows.
/*******************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "pdflib.h"
int main(void)
{
    PDF             	*p = NULL;
    int                	Font_H = 0, Font_CS = 0, Left = 50, y = 700;
    const int       	INCRY = 25;
    const char     TextUnicode[] = "\x80\x7B\x53\x4F\x2D\x4E\x87\x65";
    const int        TEXTLEN = 8;
    /* create a new PDFlib object */
    if ((p = PDF_new()) == (PDF *) 0)
    {
        printf("Couldn''t create PDFlib object (out of memory)!\n");
        return(2);
    }
    PDF_TRY(p) {
	if (PDF_begin_document(p, "pdflib_cs5.pdf", 0, "") == -1)
            {
	    printf("Error: %s\n", PDF_get_errmsg(p));
	    return(2);
  	}
       PDF_set_info(p, "Creator", "pdflib_cs5.c");
       PDF_set_info(p, "Author", "myi@pdflib.com");
       PDF_set_info(p, "Title", "Usage of Artificial font styles");
        /* Start a new page. */
        PDF_begin_page_ext(p, a4_width, a4_height, "");
        Font_H = PDF_load_font(p, "Helvetica-Bold", 0, "winansi", "");
        PDF_setfont(p, Font_H, 24);
        PDF_show_xy(p, "Artificial Font Styles", Left + 100,  y);
        /* Normal */
        y -= 2 * INCRY;
        PDF_setfont(p, Font_H, 14);
        PDF_show_xy(p, "Normal", Left,  y);
        y -= INCRY;
        Font_CS = PDF_load_font(p, "STSong-Light", 0, "UniGB-UCS2-H", "");
        PDF_setfont(p, Font_CS, 14);
        PDF_show_xy2(p, TextUnicode, TEXTLEN, Left,  y);
        /* Italic */
        y -= 2 * INCRY;
        PDF_setfont(p, Font_H, 14);
        PDF_show_xy(p, "Italic", Left,  y);
        y -= INCRY;
        Font_CS = PDF_load_font(p, "STSong-Light", 0, "UniGB-UCS2-H", "fontstyle italic");
        PDF_setfont(p, Font_CS, 14);
        PDF_show_xy2(p, TextUnicode, TEXTLEN, Left,  y);
        /* Bold */
        y -= 2 * INCRY;
        PDF_setfont(p, Font_H, 14);
        PDF_show_xy(p, "Bold", Left,  y);
        y -= INCRY;
        Font_CS = PDF_load_font(p, "STSong-Light", 0, "UniGB-UCS2-H", "fontstyle bold");
        PDF_setfont(p, Font_CS, 14);
        PDF_show_xy2(p, TextUnicode, TEXTLEN, Left,  y);
        /* Bold-italic */
        y -= 2 * INCRY;
        PDF_setfont(p, Font_H, 14);
        PDF_show_xy(p, "Bold-italic", Left,  y);
        y -= INCRY;
        Font_CS = PDF_load_font(p, "STSong-Light", 0, "UniGB-UCS2-H",
		"fontstyle bolditalic");
        PDF_setfont(p, Font_CS, 14);
        PDF_show_xy2(p, TextUnicode, TEXTLEN, Left,  y);
        /* End of page. */
	PDF_end_page_ext(p, "");
        PDF_end_document(p, "");
    }
    PDF_CATCH(p) {
        printf("PDFlib exception occurred in pdflib_cs5 sample:\n");
        	        printf("[%d] %s: %s\n",  PDF_get_errnum(p),  PDF_get_apiname(p),
		PDF_get_errmsg(p));
        PDF_delete(p);
        return(2);
    }
    PDF_delete(p);
    return 0;
}

本文配套源码

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索字体
, unigb-ucs2-h
, pdflib
, 斜体
, 粗体
left
latex 粗体 斜体、css 粗体 斜体、markdown 粗体 斜体、europeext 粗体 斜体、c font 粗体 斜体,以便于您获取更多的相关知识。

时间: 2024-10-02 03:16:13

浅谈PDFlib中文输出(五)-- 人工生成粗体及斜体字形的相关文章

浅谈PDFlib中文输出(二)如何在PDFlib中使用其他简体中文字体

除了PDFlib自带字体外,用户还可以使用安装在系统上的字体及其他用户字体. PDFlib称安装在Windows和Mac操作系统中的(存在于或被拷入相应系统字体目录的)TrueType, OpenType 和PostScript字体为宿主字体(Host Font).PDFlib可直接引用字体名进行调用,但必须与文件名完全相同(严格区分大小写).例如,调用安装在Windows系统中的字体: C:\WINDOWS\Fonts\SimHei.ttf int Font_CS = 0; Font_CS =

浅谈PDFlib中文输出(一)如何使用Acrobat标准的简体中文字体

PDF文件格式以其安全可靠,易于交换,及保真度高而成为电子文档的标准.PDFlib是一套在国际上非常流行的在服务器端批量生成PDF文档的功能强大的软件包.国外许多政府,税务,银行,水电,邮电部门用其在线生成PDF格式的单据及报表. 对于国内用户来说,如何使用PDFlib输出简体中文会是我们最关心的问题.在这里我将于大家一起分享自己的一些心得体会,不对之处请指正,若我所说于PDFlib手册有冲突,请以手册为准.我的邮箱是 :bowriver2001@yahoo.ca . 对于没有接触过PDFlib

浅谈PDFlib中文输出(四)PDFlib 接收的几种文本输入形式

PDFlib的textformat参数用以设定文本输入形式,其有效值如下: bytes: 在字符串中每个字节对应于一个字符.主要应用于8位编码. utf8:字符串是 UTF-8编码. ebcdicutf8:字符串是EBCDIC的UTF-8编码,只应用于IBM iSeries和zSeries. utf16:字符串是 UTF-16编码.如果字符串是以Unicode的标记字节顺序号(BOM)开始,PDFlib会接收BOM信息后将其从字符串首移去.如果字符串不带BOM,字符串的字节顺序将取决于主机的字节

浅谈PDFlib中文输出(三)PDFlib 的几种文本输出函数

1.PDF_show void PDF_show(PDF *p, const char *text) void PDF_show2(PDF *p, const char *text, int len) 在当前坐标用当前字体及字体大小输出文本. PDF_show将认为字符串是以空字符结尾(NULL):若字符串有可能含有空字符(如多字节字符串),用PDF_show2. 2.PDF_show_xy void PDF_show_xy(PDF *p, const char *text, double x,

浅谈document.write()输出样式

  这篇文章主要介绍了浅谈document.write()输出样式,十分的简单实用,有需要的小伙伴可以参考下. js中的最基本的命令之一:document.write(),用于简单的打印内容到页面上,可以逐字打印你需要的内容--document.write("content"),这里content就是需要输出的内容;当然还有一种情况,需要输出JS之中比如变量等等变化的东西,那么就需要用document.write(+variable);当然variable就是你想要输出的变量. 既然可

浅谈Excel开发(五) Excel的RTD函数

相关文章: 浅谈Excel开发(1) Excel开发概述 浅谈Excel开发(二) Excel 菜单系统 浅谈Excel开发(三) Excel 对象模型 上文介绍了Excel中的UDF函数,本文介绍一下同样重要的RTD函数.从Excel 2002开始,Excel引入了 一种新的查看和更新实时数据的机制,即real-time data简称RTD函数,他是一种Push-Pull的方式,及在 需要更新数据的时候,RTD给Excel Push一个消息说要更新数据,Excel在收到消息后主动拉取Pull新

浅谈百度中文分词是如何进行的

相信大家对于搜索引擎收录的分词技术一直都很好奇,掌握了解了搜索引擎分词技术对于我们这些站长的工作有很大的帮助:在网站的链接架构及关键词的布局都与分词有很大的关系.平时跟百度接触的比较多,所以就以百度中文分词为例介绍下搜索引擎分词的方法. 中文分词是什么 在了解百度的中文分词之前大家首先要了解什么是中文分词?我们中文与英文不同,是由一个个汉字连接成的,因此分起来相对比较复杂.百度的中文分词是将一个汉语句子切分成一个个的单独的词,然后按照一定的规则重新组合成一个序列的过程,简称"中文切词"

浅谈百度中文分词如何分词

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 中文分词技术是搜索引擎对于用户提交查询的关键词,搜索引擎用中文分词把词按照一定的规格,将一个长尾词分割成几个部分,从而概括一段话的主要内容,让用户能更快速度的找到想要的内容. 搜索引擎最常用的几种分词方法有三种: 一.字符串匹配的方法;(字符串匹配的分词一般为3种:1.正向最大匹配法;2.逆向最大匹配法;3.最少切分) 二.理解分词方法; 三

浅谈document.write()输出样式_javascript技巧

js中的最基本的命令之一:document.write(),用于简单的打印内容到页面上,可以逐字打印你需要的内容--document.write("content"),这里content就是需要输出的内容:当然还有一种情况,需要输出JS之中比如变量等等变化的东西,那么就需要用document.write(+variable);当然variable就是你想要输出的变量. 既然可以输出变量,肯定会想要去控制下变量的显示,比如位置以及样式.第一种控制方法是应用内部添加样式的方法,比如 复制代