常见问题
如何获取 PDF 文件中指定位置的文本对象,以及更改文本对象的内容?
使用福昕 PDF SDK 获取 PDF 文件中指定位置的文本对象以及修改文本对象的内容,请按照如下的步骤:
- 打开一个 PDF 文件。
- 加载 PDF 页面并获取该页面中的页面对象。
- 使用
PDFPage.getGraphicsObjectAtPoint
获取指定位置的文本对象。注意:使用页面对象获取矩形来查看文本对象的位置。 - 更改文本对象的内容并保存 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 组件为例:
- 按下
Win+R
,然后键入Dcomcnfg
以打开组件服务,定位到 [组件服务] -> [计算机] -> [我的电脑] -> [DCOM 配置] -> [Microsoft Word 97-2003 文档],右键单击并选择 "属性"。选择 [标识],并将其设置为 "交互式用户"。
NOTE
如果您使用 Dcomcnfg 命令无法找到 [Microsoft Word 97-2003 文档],可以尝试使用 comexp.msc -32
命令。
- 设置权限。点击 [安全],将 [启动和激活权限],[访问权限] 设置为自定义。点击编辑,添加系统当前登录账户并开启所有权限:
- 完成以上设置后,可在 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 包解压后的目录。