2

我们正在使用html2ps Perl 脚本将 HTML 转换为 PostScript。我知道这不是最好的解决方案,但这就是这里的开发人员所做的(在我之前)。

现在我们需要实现对显示每个 HTML 并且需要在每个转换后的 PostScript 文件中显示的条形码字体的支持。你怎么做到这一点?

4

5 回答 5

6

好的,我只使用字体(没有图像,根据需要)。方法如下:

  • 拿你的条形码字体(我对条形码一无所知,所以我用了Code 128免费软件 TrueType 字体;下载链接)。
  • 使其成为 Postcript(类型 1)字体,扩展名为.pfa. 我使用fontforge执行此转换,如下所示:打开 ttf 字体,选择文件 > 生成字体,使用“PS Type 1 (ASCII),并消除可能的警告。
  • 所以现在,我在一个名为Code128bWin.pfa.
  • 创建一个简约的测试文档 ( test.html):
<html>
 <head></head>
 <body>
  <p>This is a test:</p>
  <h4>BARCODE</h4>
 </body>
</html>
  • 创建一个配置文件(这是需要时间来理解的;您不能将其作为内联 CSS 放在 HTML 中;它必须是 html2ps 的配置文件)。因此,创建一个名为config
H4 { font-family: Code128bWin }

@html2ps {
  font {
    Code128bWin {
      names: "Code128bWin";
      files: "Code128bWin.pfa";
    }
  }
}
  • 因此,<h4>标签中的文本将使用代码栏字体呈现。您现在通过运行以下命令生成 Postscript 输出:html2ps -f config test.html > test.ps

欢迎评论!

作为旁注:这显然很难看,但有时需要侵入现有流程,所以我不会评判 OP。我认为这个解决方案满足所有约束:)

于 2010-03-06T16:42:39.103 回答
3

那么如果在评论中看到的是:

  1. 您不能使用之前创建的图像,这些图像通过使用<img />-tag嵌入到 html 中
  2. 您不能包含其他字体来创建条形码(不起作用)

To #1:是不可能的,因为你不能存储图像?如果是这个原因,请尝试使用barcodesinc 等在线代码创建器,例如:

http://www.barcodesinc.com/generator/image.php?code=Hello World&style=197&type=C128B&width=200&height=50&xres=1&font=3

例子:

条码2

如果您不能依赖外部服务提供商,可以在网络上免费提供免费课程,例如条形码生成器。部署在 Web 服务器上并使用<img src="http://myserver/myscript.php?code=HelloWorld"/>指向此脚本的标记。html2ps 支持渲染内联图像。

在http://www.terryburton.co.uk/barcodewriter/上还有一个开源 postscript 条形码编写器。使用 html2ps 后,您可以操作 ps 文件并嵌入barcodewriter 指令,例如:

50 450 moveto (978-1-86074-271) (includetext) /isbn /uk.co.terryburton.bwipp findresource exec

#2:您能提供一条错误消息吗?你在哪个阶段有问题?

嗯... #3 : 仅使用 html + css(仅在所有其他失败时使用)

可以使用简单的 css 和 span-elements 创建条形码:

        <style>
        .barcode {
            border:5px solid white;
            background:white;
            width:310px;
            text-align:center;

        }
        .ns{
            border-left:2px solid white;
            height:30;
        }
        .nb{
            border-left:2px solid black;
            height:30;
        }
        .ws{
            border-left:5px solid white;
            height:30;
        }
        .wb{
            border-left:5px solid black;
            height:30;
        }

    </style>
<div class='barcode' id='bcx2_bc' ><span class='nb'></span><span class='ws'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='wb'></span><span class='ws'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ws'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ws'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='wb'></span><span class='ws'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='nb'></span><span class='ws'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ws'></span><span class='wb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='nb'></span><span class='ws'></span><span class='wb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ws'></span><span class='nb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='nb'></span><span class='ws'></span><span class='nb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='wb'></span><span class='ns'></span><span class='nb'></span><span class='ns'></span><br>TEST8052</div>

例子:

条码 http://img689.imageshack.us/img689/4360/barcodeg.jpg

此代码是使用HTML Bar Codes创建的,也是一个 php 类。你也可以

  • 通过命令行界面调用它并将其嵌入到每个 html 页面的普通 html 中(对于动态条形码)
  • 使用 cli/server 创建一次代码并将其放入您的 html 硬编码中(仅适用于您的条形码不会随每个 html 页面更改的情况)

我无法想象任何其他可能性。

于 2010-03-06T14:00:01.780 回答
2

我发现由字体组成的条形码相当于一个可怕的黑客攻击。我建议正确生成 PostScript:http ://www.terryburton.co.uk/barcodewriter/

于 2010-02-25T15:53:13.710 回答
2

嗯,嗯,html2ps 用户指南有一个名为“字体块”的部分,其中指出:

目前,html2ps 可以识别以下字体:Times、New-Century-Schoolbook、Helvetica、Helvetica-Narrow、Palatino、Avantgarde、Bookman 和 Courier。

然后继续解释如何定义用于 html2ps 的新字体类型。也许这会有所帮助?

于 2010-02-26T14:16:51.857 回答
1

也许您不需要为 html2ps 添加条形码支持,您只需生成带有所需条形码图像的 html 页面。

您可以使用这样的项目来实现此目的:barcode-generatorGNU Barcode

使用 GNU 条形码,这就是我要做的:

  1. 以 EPS 格式生成我需要的条形码。
  2. 使用 imagemagick 将其转换为 html 友好格式,例如 PNG
  3. 在 html 页面中使用生成的图像。

所有这些对我来说似乎很容易实现/编写脚本,如果您需要,我可以在这个方向上提供更多帮助。

于 2010-03-05T11:56:50.010 回答