嵌入字体和 11 月字体有什么区别?

2023-11-29

在书中我看到了例子:

BaseFont bf = BaseFont.createFont("KozMinPro-Regular", "Identity-V", BaseFont.NOT_EMBEDDED);
Font font = new Font(bf, 20);
VerticalText vt = new VerticalText(writer.getDirectContent()); vt.setVerticalLayout(390, 570, 540, 12, 30);
font = new Font(bf, 20);
vt.addText(new Phrase(convertCIDs("a"), font));
vt.go();

public String convertCIDs(String text) {
  char cid[] = text.toCharArray();
  for (int k = 0; k < cid.length; ++k) {
  char c = cid[k];
  if (c == '\n')
    cid[k] = '\uff00';
  else
    cid[k] = (char) (c - ' ' + 8720);
  }
  return new String(cid);
}

当我更改为:

BaseFont bf = BaseFont.createFont("/../KozMinProRegular.otf",BaseFont.IDENTITY_V, BaseFont.EMBEDDED);

结果:'a' 没有顺时针旋转 90 度。


当未嵌入字体时,PDF 查看器不知道该字体是什么样子。它不使用实际的字体,而是在查看文档的人的操作系统上搜索具有相似名称的字体。

例如:有14个所谓的标准 Type 1 字体不需要嵌入的:

  • 扎普夫丁巴特斯
  • 罗马时代
  • 时代斜体
  • 黑体-博多布利克
  • 博尔多布里克信使公司
  • Helvetica 粗体
  • 黑体
  • 斜信使
  • 斜体 Helvetica
  • 快递粗体
  • 时代粗斜体
  • courier
  • 倍粗体
  • symbol

如果您在 iText 中使用这些字体,iText 将忽略embedded参数,因为可以安全地假设 Adob​​e Reader 和其他查看器可以正确呈现这些字体。

现在假设您使用特殊字体(例如 Coca Cola 字体)来绘制在可口可乐广告上看到的文本,或者使用 Walt Disney 字体(例如 Walt Disney 字体)来使用卷曲的 Walt Disney 字形绘制文本。在这种情况下,最好嵌入字体。如果不这样做,当用户打开 PDF 文档时,字体很可能无法正确显示。

嵌入字体意味着您将完整字体或字体子集的字形描述包含到 PDF 中。这会导致文件大小增加,但在某些情况下,必须嵌入字体。例如:如果要遵守PDF/A标准,则需要嵌入所有字体。

当使用 CJK 字体(在 itext-asian.jar 中定义的字体)时,iText 将忽略embedded范围。它会never嵌入 CJK 字体,因为 CJK 字体期望您的查看器中存在亚洲字体包(如果不存在,Adobe Reader 将要求您下载此类字体包)。

使用时IDENTITY_H or IDENTITY_V, iText 也会忽略embedded参数,因为 PDF 规范要求您在使用这些值时嵌入字体的子集encoding范围。

目前尚不清楚为什么您会期望在更改字形时顺时针旋转 90 度embedded范围。在我看来,你正在混淆一些概念。IDENTITY_V与旋转字形无关。它是关于垂直而不是水平渲染文本。对于西方语言,我们从左到右、从上到下水平书写文本。阿拉伯语和希伯来语是从右到左以水平线书写的。一些亚洲语言(例如日语)是垂直书写的,从右到左按列排列。这是你要使用的时候IDENTITY_V,不是将字形旋转 90 度,而是确保不同字形之间的垂直间距正确(而IDENTITY_H定义水平间距)。

See 垂直文本_1.pdf举个例子,其中V说得通。还有一个我们旋转文本的示例:

/**
 * Converts the CIDs of the horizontal characters of a String
 * into a String with vertical characters.
 * @param text The String with the horizontal characters
 * @return A String with vertical characters
 */
public String convertCIDs(String text) {
    char cid[] = text.toCharArray();
    for (int k = 0; k < cid.length; ++k) {
        char c = cid[k];
        if (c == '\n')
            cid[k] = '\uff00';
        else
            cid[k] = (char) (c - ' ' + 8720);
    }
    return new String(cid);
}

结果如下:垂直文本_2.pdf(我承认,不太好)。此示例的完整代码可以找到here.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入字体和 11 月字体有什么区别? 的相关文章

  • Itextsharp:导入页面时有没有办法复制链接?

    我正在开发一个项目 需要在显示 pdf 之前对其进行编辑 I need 添加水印 编辑权限 锁定以避免 复制 粘贴 和 另存为 编辑观众偏好 我做到了 并且工作正常 除了一件事 原始文件中的链接在新文件中不起作用 有什么想法吗 注意 实际上
  • 使用 itextsharp 勾选 pdf 复选框

    我尝试了很多不同的方法 但我无法选中该复选框 这是我尝试过的 var reader new iTextSharp text pdf PdfReader originalFormLocation using var stamper new i
  • 使用 itext pdf stamper 在 pdf 中添加多个附件

    我想在一个 pdf 文件中添加多个附件 当我进入循环时 它只附加最后一个附件 示例代码 PdfReader reader new PdfReader FILE PdfStamper stamper new PdfStamper reader
  • 如何找出当前页面上的光标位置?

    我向页面添加了一堆内容 例如document add p 然后我使用文档添加一个填充两列的表格here http itextpdf com examples iia php id 91 在这个过程中 我使用 column setSimple
  • 如何生成不带绿色复选标记的签名 PDF

    我正在使用 iText 签署 PDF 我在签名中添加了图形 这是可行的 但是验证文档时显示的绿色复选标记 或黄色问号 会干扰我插入的图形 使最终结果看起来很难看 它要么显示在签名图形的上方或下方 但我无法让它消失 有谁知道如何解决这一问题
  • PDF 页面的原点 (x,y) 在哪里?

    我在用iText创造我的PDF files 我想使用我在这里找到的方法将文本放置在文档中的某个特定位置 itext 绝对定位文本 https stackoverflow com questions 1625455 itext positio
  • TextRenderInfo 在 iTextSharp 中如何工作?

    我从网上得到了一些代码 他们为我提供了字体大小 我不明白 TextRenderInfo 如何读取文本 我尝试使用 renderInfo GetText 它给出随机数量的字符 有时是 3 个字符 有时是 2 个字符或更多或更少 我需要知道 r
  • itextsharp 不关闭文件

    我有一些用于 itextsharp 合并 2 个 pdf 文件的代码 在网上某处找到的 合并工作正常 但似乎源文件在全部完成后仍在使用 我想做的是删除我已经合并的第一个文件 通过文件上传上传 并仅保留合并的文件 肯定是执行合并的代码导致文件
  • iText PdfTextExtractor 结果文本中缺少连字

    我正在尝试获取 pdf 文件并从中获取文本 我发现了 iText 并一直在使用它 并取得了不错的成功 我剩下的一个问题是连字 起初我注意到我只是缺少字符 经过一些搜索后 我发现了这个 http support itextpdf com no
  • 如何向自定义形状添加阴影图案

    我使用 iText 绘制了一个等边三角形 如下所示 canvas setColorStroke BaseColor BLACK int x start getX int y start getY canvas moveTo x y canv
  • 验证 PDF 文档中的数字签名

    我正在尝试验证 PDF 数字签名 我知道 当 PDF 被签名时 会定义一个字节范围 嵌入证书 并且根据我的阅读 签名的消息摘要和时间戳也存储在 PDF 中 我已经可以提取证书并验证它们 现在我正在尝试验证 pdf 的完整性 但我的问题是我不
  • 如何使用 iText 对 pdf 进行数字签名?

    如何使用 iText 签署 pdf 我正在经历这个LINK http itextpdf sourceforge net howtosign html但不了解 my private key pfx 我真的需要数字签名证书吗 请澄清我 提前致谢
  • 如何使用 itext 在 pdf 页脚上添加页码,它应该照顾其宽度?

    我的代码示例如下 Override public void onEndPage PdfWriter writer Document document addFooter writer private void addFooter PdfWr
  • C# 3.0 使用MemoryStream将itextsharp pdf保存到数据库

    我正在尝试将 itextsharp 生成的 pdf 文件保存到数据库 但是 到目前为止我还没有成功 我正在使用 Linq to sql 这是代码 MemoryStream ms new MemoryStream Document d new
  • 使用 iTextSharp 5.3.3 和 USB 令牌签署 PDF

    我是 iTextSharp 和 StackOverFlow 的新手 我正在尝试使用外部 USB 令牌在 C 中签署 PDF 我尝试使用从互联网上挖掘的以下代码 Org BouncyCastle X509 X509CertificatePar
  • 是否可以修改 PDF 表单字段名称?

    情况是这样的 我有一个 PDF 其中包含自动生成的 pdf 表单字段名称 问题是这些名称不太用户友好 它们看起来像 topmostSubform 0 Page1 0 Website Address 0 我希望能够更改它们 使它们类似于 We
  • 如何在启用嵌入时间戳和 LTV 的情况下签署 PDF?

    我正在尝试签署启用了时间戳和 LTV 的 pdf 以便它在 Adob e Reader 中显示如下 在英语中 这意味着 签名包含嵌入的时间戳 和 签名启用了 LTV 这是我正在使用的代码 PrivateKey pk get pk from
  • 使用 Itextsharp 读取本地化 PDF 文件

    我正在尝试使用 iTextSharp 阅读 PDF 文件 问题是当尝试阅读英语以外的 PDF 文件 例如印地语或阿拉伯语 时 它无法获取正确的单词 我想知道 我应该在系统上安装印地语或阿拉伯字体 还是需要对编码进行一些处理 ITextExt
  • 将文字放在图像之上?

    我需要在 pdf 中插入图像 然后将文本放在图像顶部的特定坐标处 iTextSharp 可以做到这一点吗 是的你可以 关键是要设置你的iTextSharp text Image Alignment财产给iTextSharp text Ima
  • java中的csv到pdf文件

    我正在尝试获得一个csv文件解析为pdf 到目前为止我所拥有的内容附在下面 我的问题是这段代码最终出现在 pdf 中的文件在 csv 文件的第一行被截断 我不明白为什么 附示例 本质上我想要一个没有任何操作的 csv 文件的 pdf 版本

随机推荐