如何将使用 Type 3 Font 编写的文本从一个 pdf 移动到另一个 pdf?

Posted

技术标签:

【中文标题】如何将使用 Type 3 Font 编写的文本从一个 pdf 移动到另一个 pdf?【英文标题】:How to move text written in Type 3 Font from one pdf to other pdf? 【发布时间】:2014-04-24 06:17:34 【问题描述】:

我有一个 pdf,其中包含用 Type 3 字体编写的文本。

我想从中获取一些文本并以完全相同的形状将其写入其他 pdf。

我正在使用 itext。请给我一个提示。

编辑:我附上了我的代码。

DocumentFont f = renderInfo.getFont(); 
String str = renderInfo.getText();
x = renderInfo.getBaseline().getStartPoint().get(Vector.I1);

在这段代码中,我想将 str 写入 x 值位置。 在 Type 3 字体中,它可以工作吗?

【问题讨论】:

您希望将文档 A 中的一部分页面(包含 Type 3 字体字形)原样复制到文档 B,还是希望内容发生一些重新排列? 我想要重新排列以 Type 3 字体编写的内容。我尝试了 RenderListener.renderText,但 renderInfo.getFont()、getBaseline() 得到了奇怪的值。我不知道下一步。 @mkl 我更新了问题,你能指导我吗? 我想要重排内容 - 这可能会很困难。您能否提供具有此类 Type 3 字体文本的代表性示例文档,并指出如何选择要复制的字形? @mkl 我想把dl.dropboxusercontent.com/u/5872993/from.pdf 变成dl.dropboxusercontent.com/u/5872993/to.pdf 【参考方案1】:

您可以使用以下代码将一页的部分内容复制到新页面:

    InputStream resourceStream = getClass().getResourceAsStream("from.pdf");
    PdfReader reader = new PdfReader(new FileOutputStream("from.pdf"));
    Rectangle pagesize = reader.getPageSizeWithRotation(1);
    Document document = new Document(pagesize);
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("areaOfFrom.pdf"));
    document.open();

    PdfContentByte content = writer.getDirectContent();
    PdfImportedPage page = writer.getImportedPage(reader, 1);

    content.saveState();
    content.rectangle(0, 350, 360, 475);
    content.clip();
    content.newPath();
    content.addTemplate(page, 0, 0);
    content.restoreState();

    document.close();
    reader.close();

这会让你的

进入

不幸的是,隐藏的内容只是......隐藏......但它仍然存在。您可以特别标记带有隐藏文本的行并尝试复制和粘贴它们。

如果您想完全删除该隐藏文本(或仅从复制所需文本开始),您必须检查导入页面的内容并对其进行过滤。恐怕 iText 还没有明确支持这样的东西。可以使用 iText 低级 API 来完成,但工作量很大。

【讨论】:

以上是关于如何将使用 Type 3 Font 编写的文本从一个 pdf 移动到另一个 pdf?的主要内容,如果未能解决你的问题,请参考以下文章

如何将值从一列映射到另一列数据框? [复制]

如何以角度停止输入类型=“文本”字段中的字符

单击按钮时如何将文本视图从一件事切换到另一件事 - Android

如何在 React JS 中使用三元运算符将 Font Awesome Icons 与文本一起使用?

如何使用 python opencv2 在 Windows 中的图像上写入文本

如何从一系列文本条目中提取常用/重要短语