java - 如何在 Java 中使用 iText 从 PDF 文件中删除页眉和页脚

标签 java pdf itext

我正在使用 PDF iText 库将 PDF 转换为文本。

下面是我使用 Java 将 PDF 转换为文本文件的代码。

public class PdfConverter {

/** The original PDF that will be parsed. */
public static final String pdfFileName = "jdbc_tutorial.pdf";
/** The resulting text file. */
public static final String RESULT = "preface.txt";

/**
 * Parses a PDF to a plain text file.
 * @param pdf the original PDF
 * @param txt the resulting text
 * @throws IOException
 */
public void parsePdf(String pdf, String txt) throws IOException {
    PdfReader reader = new PdfReader(pdf);
    PdfReaderContentParser parser = new PdfReaderContentParser(reader);
    PrintWriter out = new PrintWriter(new FileOutputStream(txt));

    TextExtractionStrategy strategy;
    for (int i = 1; i <= reader.getNumberOfPages(); i++) {
        strategy = parser.processContent(i, new SimpleTextExtractionStrategy());
        out.println(strategy.getResultantText());
        System.out.println(strategy.getResultantText());
    }
    out.flush();
    out.close();
    reader.close();
}

/**
 * Main method.
 * @param    args    no arguments needed
 * @throws IOException
 */
public static void main(String[] args) throws IOException {
    new PdfConverter().parsePdf(pdfFileName, RESULT);
}
}

以上代码适用于将 PDF 提取为文本。但我的要求是忽略页眉和页脚,只从 PDF 文件中提取内容。

最佳答案

因为您的 pdf 有页眉和页脚,所以它会被标记为人工制品(如果它不仅仅是放置在页眉或页脚位置的文本或内容)。如果它被标记为人工制品,您可以使用 ParseTaggedPdf 提取它。如果 ParseTaggedPdf 不起作用,您还可以使用 ExtractPageContentArea。您可以查看一些与之相关的示例。

以上解决方案是通用的,取决于文件。如果你真的需要一个替代解决方案,你可以使用像 PdfBox、tika 和其他像 PDFTextStream 这样的 Apache API。如果您必须坚持使用 iText 并且不能继续使用其他库,那么我在下面给出的解决方案将不起作用。在 PdfBox 中,您可以使用 PDFTextStripperByArea 或 PDFTextStripper。如果您需要了解如何使用它,请查看 JavaDoc 或一些示例。

关于java - 如何在 Java 中使用 iText 从 PDF 文件中删除页眉和页脚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27884283/

相关文章:

Java PDF 操作和渲染

c# - 我们如何在 iTextSharp 中编写 Unicode 印地文文本?

java - 使用 Java 中的 SAML 和 Azure AD 作为 IDP 实现单点登录 (SSO)

java - Java 中的位操作 - 2 的补码和翻转位

java - 使用 PreBuiltTransportClient 调用 elasticsearch

asp.net - 如何在aspx页面内显示pdf?

java - 将 PDF 转换为 PNG (tess4j) - 本地工作正常,但在服务器 JBoss 中不工作

处理 eps/pdf 的 C++ 库

unix - 如何合并 PDF 文件(如果不可能,则合并 PS),以便每个文件都以奇数页开头?

java - 如何使用java将多个多页tiff文件合并为单个pdf?