本文目錄一覽:
- 1、java 如何讀取PDF文件內容
- 2、怎麼用java讀取pdf中的表格
- 3、用Java 讀取 PDF 遇到中文標籤該怎麼處理
- 4、如何用java讀取pdf文檔的部分內容
- 5、怎麼用java讀取pdf文件內容
- 6、java解析pdf文字順序不對
java 如何讀取PDF文件內容
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.MalformedURLException;
import java.net.URL;
import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.util.PDFTextStripper;
public class PdfReader {
public void readFdf(String file) throws Exception {
// 是否排序
boolean sort = false;
// pdf文件名
String pdfFile = file;
// 輸入文本文件名稱
String textFile = null;
// 編碼方式
String encoding = “UTF-8”;
// 開始提取頁數
int startPage = 1;
// 結束提取頁數
int endPage = Integer.MAX_VALUE;
// 文件輸入流,生成文本文件
Writer output = null;
// 內存中存儲的PDF Document
PDDocument document = null;
try {
try {
// 首先當作一個URL來裝載文件,如果得到異常再從本地文件系統//去裝載文件
URL url = new URL(pdfFile);
//注意參數已不是以前版本中的URL.而是File。
document = PDDocument.load(pdfFile);
// 獲取PDF的文件名
String fileName = url.getFile();
// 以原來PDF的名稱來命名新產生的txt文件
if (fileName.length() 4) {
File outputFile = new File(fileName.substring(0, fileName
.length() – 4)
+ “.txt”);
textFile = outputFile.getName();
}
} catch (MalformedURLException e) {
// 如果作為URL裝載得到異常則從文件系統裝載
//注意參數已不是以前版本中的URL.而是File。
document = PDDocument.load(pdfFile);
if (pdfFile.length() 4) {
textFile = pdfFile.substring(0, pdfFile.length() – 4)
+ “.txt”;
}
}
// 文件輸入流,寫入文件倒textFile
output = new OutputStreamWriter(new FileOutputStream(textFile),
encoding);
// PDFTextStripper來提取文本
PDFTextStripper stripper = null;
stripper = new PDFTextStripper();
// 設置是否排序
stripper.setSortByPosition(sort);
// 設置起始頁
stripper.setStartPage(startPage);
// 設置結束頁
stripper.setEndPage(endPage);
// 調用PDFTextStripper的writeText提取並輸出文本
stripper.writeText(document, output);
} finally {
if (output != null) {
// 關閉輸出流
output.close();
}
if (document != null) {
// 關閉PDF Document
document.close();
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
PdfReader pdfReader = new PdfReader();
try {
// 取得E盤下的SpringGuide.pdf的內容
pdfReader.readFdf(“E://SpringGuide.pdf”);
} catch (Exception e) {
e.printStackTrace();
}
}
}
怎麼用java讀取pdf中的表格
ITEXT插件方法
/**
* @param pdf PDF文件路徑
* @param txt 輸出文本文件路徑
* @throws IOException
*/
public void parsePdf(String pdf, String txt) throws IOException {
PdfReader reader = new PdfReader(pdf);
PrintWriter out = new PrintWriter(new FileOutputStream(txt));
Rectangle rect = new Rectangle(70, 80, 490, 580);
RenderFilter filter = new RegionTextRenderFilter(rect);
TextExtractionStrategy strategy;
for (int i = 1; i = reader.getNumberOfPages(); i++) {
strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), filter);
out.println(PdfTextExtractor.getTextFromPage(reader, i, strategy));
}
out.flush();
out.close();
reader.close();
}
PDFBOX插件方法
PDDocument document = PDDocument.load( args[0] );
if( document.isEncrypted() )
{
document.decrypt( “” );
}
PDFTextStripperByArea stripper = new PDFTextStripperByArea();
stripper.setSortByPosition( true );
Rectangle rect = new Rectangle( 10, 280, 275, 60 );
stripper.addRegion( “class1”, rect );
List allPages = document.getDocumentCatalog().getAllPages();
PDPage firstPage = (PDPage)allPages.get( 0 );
stripper.extractRegions( firstPage );
System.out.println( “Text in the area:” + rect );
System.out.println( stripper.getTextForRegion( “class1” ) );
用Java 讀取 PDF 遇到中文標籤該怎麼處理
直接使用系統字體讀取或創建帶中文的pdf,需要注意jar的版本。
dependency
groupIdcom.itextpdf/groupId
artifactIditextpdf/artifactId
version5.5.8/version
/dependency
dependency
groupIdcom.itextpdf/groupId
artifactIditext-asian/artifactId
version5.2.0/version
/dependency
dependency
groupIdcom.itextpdf.tool/groupId
artifactIdxmlworker/artifactId
version5.5.6/version
/dependency123456789101112131415
代碼如下,覆寫XMLWorkerFontProvider$getFont即可讀取中文
public void createPdf(String src, String dest) throws IOException, DocumentException {
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
XMLWorkerHelper.getInstance().parseXHtml(writer, document, new FileInputStream(src), null, new XMLWorkerFontProvider(){ public Font getFont(final String fontname, final String encoding,
final boolean embedded, final float size, final int style,
final BaseColor color) {
BaseFont bf = null;
try {
bf = BaseFont.createFont(“C:/Windows/Fonts/SIMYOU.TTF”,BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
} catch (Exception e) {
e.printStackTrace();
}
Font font = new Font(bf, size, style, color);
font.setColor(color);
return font;
}
});
document.close();
}1234567891011121314151617181920212223
創建時,使用系統(windows下)的字體即可
BaseFont baseFont = BaseFont.createFont(“C:/Windows/Fonts/SIMYOU.TTF”,BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
Font font = new Font(baseFont);
如何用java讀取pdf文檔的部分內容
你需要用到PDFbox api
例子如下
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import org.apache.pdfbox.text.PDFTextStripperByArea;
try {
PDDocument document = null;
document = PDDocument.load(new File(“test.pdf”));
document.getClass();
if (!document.isEncrypted()) {
PDFTextStripperByArea stripper = new PDFTextStripperByArea();
stripper.setSortByPosition(true);
PDFTextStripper Tstripper = new PDFTextStripper();
String st = Tstripper.getText(document);
System.out.println(“Text:” + st);
}
} catch (Exception e) {
e.printStackTrace();
}
怎麼用java讀取pdf文件內容
你可以把pdf轉成word在進行讀取
推薦使用轉轉大師pdf轉word轉換器,免費的在線工具
百度搜索下,在線免費轉換就行了,不用下載註冊,很方便
java解析pdf文字順序不對
修復你的PDF軟體或者調整頁面順序。
java解析pdf獲取pdf中內容信息:
第一種 使用開源組織提供的開源框架 pdfboxapi ;
特點:免費,功能強大,解析中文或許會存在亂碼,默認格式有點亂,沒有國產解析的那麼美化。
想要按行讀取:可以按照指定的模板,對pdf進行修改添加刪除等操作,總之操作很騷,很強大。
1.pdfbox 需要帶入依賴。
2.代碼。
第二種使用國產的框架 Spire.PDF包含兩種版本。
1 免費版。
友情提示: 免費版有 10 頁的頁數輸出限制,在輸出結果文檔時只能輸出前10頁。將 PDF 文檔轉換為圖片、Word、HTML、XPS等格式時,僅支持轉換前 10 頁。如超出限制,可升級到商業版,我們僅對免費版進行不定期維護。
2 商業版本。
。
api。
。
特點:商業版本收費,免費版本有限制,可供開發人員調試,解析格式友好,解析結果是按照行顯示,對pdf 圖形 ,水印 ,文本, 條形碼等添加增刪改操作,總之個人感覺比pdfbox順手,但就是收費啊,誰讓咱公司沒錢呢。
主要功能:
只需 Free Spire.PDF for Java,無需 Adobe Acrobat。
Free Spire.PDF for Java 是一款完全獨立的 PDF 類庫。它的運行環境無需安裝 Adobe Acrobat 或其他任何第三方組件。
多樣化的PDF文檔操作功能。
Free Spire.PDF for Java 支持畫文本、圖片、表格、條形碼、形狀到 PDF,提取文本和圖片,創建、填充和刪除 PDF 表單,添加文本/圖片水印到 PDF,添加、更新和刪除 PDF 書籤,操作超鏈接、附件和注釋,以及添加圖片/文本印章到 PDF 等。
文檔信息設置。
Free Spire.PDF for Java 支持設置 PDF 文檔信息,例如文檔屬性設置,偏好設置(頁面方向,頁面大小,縮放比例等)。
高質量的文檔轉換功能。
Free Spire.PDF for Java 支持將 PDF 文檔高質量地轉換為 Word、HTML、XPS、圖片、SVG 和 PDF/A 格式,以及將 XPS 文檔高質量地轉換為 PDF 格式。
文檔安全性設置。
Free Spire.PDF for Java 支持給 PDF 文檔添加和驗證數字簽名,加密和解密 PDF 文檔,修改 PDF 文檔的安全許可權,以及檢測簽名後的 PDF 文檔是否被修改。
易於集成。
開發人員可以輕易地將 Free Spire.PDF for Java 集成到 Java(J2SE和J2EE)應用程序中。
原創文章,作者:IAIG,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/139651.html