iText中的文字大纲

时间:2017-03-29 18:46:05

标签: java pdf itext

我正在尝试保存将文本转换为轮廓的PDF(根据打印机的要求),但似乎无法使其正常工作。我在iText的网站上找到了一个例子的参考,但从那以后他们改变了他们的网站,我现在似乎无法找到它。我目前正在嵌入字体并且效果很好,但不知道如何将其展平以便将文本转换为轮廓。我正在使用iText 5.5.11 for Java。

1 个答案:

答案 0 :(得分:0)

如果您使用的是acrobat和.Net, 您可以使用acrobat iac调用javescript将其保存为eps,这是字体概述。

请参阅JSObjectControlCS示例和javascript SaveAs参考

JSObjectControlCS

SaveAs

以下是我的工作样本

///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之前,我们必须添加using convert fonts to outlines preflight

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