Skip to content

常见问题

如何获取 PDF 文件中指定位置的文本对象,以及更改文本对象的内容?

使用福昕 PDF SDK 获取 PDF 文件中指定位置的文本对象以及修改文本对象的内容,请按照如下的步骤:

  1. 打开一个 PDF 文件。
  2. 加载 PDF 页面并获取该页面中的页面对象。
  3. 使用 PDFPage.getGraphicsObjectAtPoint 获取指定位置的文本对象。注意:使用页面对象获取矩形来查看文本对象的位置。
  4. 更改文本对象的内容并保存 PDF 文档。

以下是示例代码:

[updateText.java]
java
import com.foxit.sdk.PDFException;
import com.foxit.sdk.common.fxcrt.PointF;
import com.foxit.sdk.pdf.PDFDoc;
import com.foxit.sdk.pdf.PDFPage;
import com.foxit.sdk.pdf.graphics.\*;
import static com.foxit.sdk.common.Constants.\*;
import static com.foxit.sdk.pdf.PDFDoc.\*;
import static com.foxit.sdk.pdf.graphics.GraphicsObject.\*;
...
public class graphics\_objects {
...
    static bool ChangeTextObjectContent() throws PDFException {
      String input\_file = input\_path + "AboutFoxit.pdf";
      PDFDoc doc = new PDFDoc(input\_file);
      int error\_code = doc.load(null);
      if (error\_code != e\_ErrSuccess) {
        System.out.println(String.format("The Doc [%s] Error: %d\n", input\_file, error\_code);
        return false;
      }
      // Get original shading objects from the first PDF page.
      PDFPage original\_page = doc.getPage(0);
      original\_page.startParse((e\_ParsePageNormal, null, false);
      PointF pointf = new PointF(92, 762);
      GraphicsObjectArray arr = original\_page.getGraphicsObjectsAtPoint(pointf, 10, e\_TypeText);
      for(int i = 0; i<arr.getSize(); i++) {
        GraphicsObject graphobj = arr.getAt(i);
        TextObject textobj = graphobj.getTextObject();
        textobj.setText("Foxit Test");
      }
      original\_page.generateContent();
      String output\_directory = output\_path + "graphics\_objects/";
      String output\_file = output\_directory + "After\_revise.pdf";
      doc.saveAs(output\_file, e\_SaveFlagNormal);
      return true;
    }
...
}

是否可以改变嵌入 TIFF 图像的 DPI?

无法改变。PDF 中图像的 DPI 是静态的,如果图像已经存在,福昕 PDF SDK 没有更改图像 DPI 的功能。解决办法是您可以使用第三方库来更改图像的 DPI,然后将其添加到 PDF 中。

NOTE

  • 福昕 PDF SDK 提供了一个函数 Image.setDPIs,可以用来设置图片对象的 DPI 属性,但是它仅支持使用 Foxit PDF SDK 创建或者使用 Image.addFrame 函数创建的图像,不支持 JPX, GIF 和 TIF 格式。

为什么在运行 OCR 和 DWG2PDF 模块相应的 simple demo 时,即使引擎文件已经升级到最新版本并且 simple demo 已经正确配置了引擎路径,在 Windows 7 系统上仍会遇到 "无法初始化引擎文件或无法加载引擎文件" 的错误?

在 Windows 7,您需要将引擎目录中以 api-ms-win\* 开头的 dll 文件和 ucrtbase.dll 文件复制到系统目录中。

  • 如果您使用 32 位引擎并在 32 位系统上运行,则需要将引擎目录中的 api-ms-win\*.dll 文件和 ucrtbase.dll 文件复制到 C:/Windows/System32 中。
  • 如果您使用 32 位引擎并在 64 位系统上运行,则需要将引擎目录中的 api-ms-win\*.dll 文件和 ucrtbase.dll 文件复制到 C:/Windows/SysWOW64 中。
  • 如果您使用 64 位引擎,则需要将引擎目录中的 api-ms-win\*.dll 文件和 ucrtbase.dll 文件复制到 C:/Windows/System32 中。

如何在 Windows 服务中运行 Office2PDF 功能?

在 Windows 服务中运行 Office2PDF 功能,需要配置 office 组件服务并配置权限。

以 Word 组件为例:

  1. 按下 Win+R,然后键入 Dcomcnfg 以打开组件服务,定位到 [组件服务] -> [计算机] -> [我的电脑] -> [DCOM 配置] -> [Microsoft Word 97-2003 文档],右键单击并选择 "属性"。选择 [标识],并将其设置为 "交互式用户"。

NOTE

如果您使用 Dcomcnfg 命令无法找到 [Microsoft Word 97-2003 文档],可以尝试使用 comexp.msc -32 命令。

  1. 设置权限。点击 [安全],将 [启动和激活权限],[访问权限] 设置为自定义。点击编辑,添加系统当前登录账户并开启所有权限:

  1. 完成以上设置后,可在 Windows 服务中运行 Word2PDF 功能。

福昕 PDF SDK JavaScript 支持列表

请参考 JavaScript支持列表

引用

1.PDF reference 1.7

http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51502

2.PDF reference 2.0

https://www.iso.org/standard/63534.html

3. 福昕 PDF SDK API 文档

sdk_folder/doc/Foxit PDF SDK Java API Reference.html

NOTE

sdk_folder 是 SDK 包解压后的目录。