iText 中的文本轮廓



我正在尝试保存将文本转换为轮廓的PDF(根据打印机的要求(,但似乎无法使其工作。我在iText的网站上找到了一个示例的引用,但是从那时起他们更改了他们的网站,我现在似乎找不到它。我目前正在嵌入字体,效果很好,但不知道如何拼合它以便将文本转换为轮廓。我正在使用iText 5.5.11 for Java。

如果您使用的是 Acrobat 和 .Net,您可以使用 Acrobat IAC 调用 JaveScript 以将其保存到字体轮廓的 EPS。

请参阅 JSObjectControlCS 示例和 JavaScript SaveAs 参考

JSObjectControlCS

保存为

以下是我的工作示例

///fsharp codes
let saveToEPS src dest =
    let avDoc = new AcroAVDocClass()
    avDoc.Open(src,"") |> ignore
    let pdDoc = avDoc.GetPDDoc() :?> CAcroPDDoc
    let jsObj = pdDoc.GetJSObject()
    let t = jsObj.GetType()
    t.InvokeMember(
        "saveAs",
        BindingFlags.InvokeMethod ||| BindingFlags.Public ||| BindingFlags.Instance,
        null,
        jsObj,
        [|box dest; box "com.adobe.acrobat.eps"|]
    )
    |> ignore

更新:在保存到 EPS 之前,我们必须添加一个使用转换字体到轮廓印前检查

let convertToOutlinesScript = """ 
    var oProfile = Preflight.getProfileByName("Convert fonts to outlines");
    var oThermometer = app.thermometer;
    var myPreflightResult = this.preflight( oProfile, false, oThermometer);
    if( myPreflightResult.numErrors > 0 ) {
    console.println( "Preflight found " + myPreflightResult.numErrors + " Errors.");
    } """
t.InvokeMember(
    "setAction",
    BindingFlags.InvokeMethod ||| BindingFlags.Public ||| BindingFlags.Instance,
    null,
    jsObj,
    [|box "WillSave"; box convertToOutlinesScript|]
) |> ignore

最新更新