我正在使用 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/