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 中。

Image.setDPIs

福昕 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 包解压后的目录。