<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Java PDFBox 教程 原文:http://zetcode.com/java/pdfbox/ Java PDFBox 教程展示了如何使用 PDFBox 在 Java 中創建 PDF 文件。 ## PDFBox Apache PDFBox 是一個開源 Java 庫,可用于創建,渲染,打印,拆分,合并,更改,驗證和提取 PDF 文件的文本和元數據。 另一個非常流行的用于處理 PDF 文件的 Java 庫稱為 iText 。 ## PDFBox Maven 依賴項 我們需要為我們的項目添加以下 Maven 依賴項。 ```java <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.8</version> </dependency> ``` ## Java PDFBox 寫文本 在下面的示例中,我們創建一個 PDF 文檔并將一些文本寫入其中。 `JavaPdfBoxWriteText.java` ```java package com.zetcode; import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.pdmodel.font.PDType1Font; public class JavaPdfBoxWriteText { public static void main(String[] args) throws IOException { try (PDDocument doc = new PDDocument()) { PDPage myPage = new PDPage(); doc.addPage(myPage); try (PDPageContentStream cont = new PDPageContentStream(doc, myPage)) { cont.beginText(); cont.setFont(PDType1Font.TIMES_ROMAN, 12); cont.setLeading(14.5f); cont.newLineAtOffset(25, 700); String line1 = "World War II (often abbreviated to WWII or WW2), " + "also known as the Second World War,"; cont.showText(line1); cont.newLine(); String line2 = "was a global war that lasted from 1939 to 1945, " + "although related conflicts began earlier."; cont.showText(line2); cont.newLine(); String line3 = "It involved the vast majority of the world's " + "countries—including all of the great powers—"; cont.showText(line3); cont.newLine(); String line4 = "eventually forming two opposing military " + "alliances: the Allies and the Axis."; cont.showText(line4); cont.newLine(); cont.endText(); } doc.save("src/main/resources/wwii.pdf"); } } } ``` 該示例將四行內容寫入 PDF 文檔。 ```java try (PDDocument doc = new PDDocument()) { ``` 創建一個新的`PDDocument`。 默認情況下,文檔具有 A4 格式。 ```java PDPage myPage = new PDPage(); doc.addPage(myPage); ``` 創建一個新頁面并將其添加到文檔中。 ```java try (PDPageContentStream cont = new PDPageContentStream(doc, myPage)) { ``` 要寫入 PDF 頁面,我們必須創建一個`PDPageContentStream`對象。 ```java cont.beginText(); ... cont.endText(); ``` 在`beginText()`和`endText()`方法之間寫入文本。 ```java cont.setFont(PDType1Font.TIMES_ROMAN, 12); cont.setLeading(14.5f); ``` 我們設置字體和文本開頭。 ```java cont.newLineAtOffset(25, 700); ``` 我們使用`newLineAtOffset()`方法開始新的一行文本。 頁面的原點位于左下角。 ```java String line1 = "World War II (often abbreviated to WWII or WW2), " + "also known as the Second World War,"; cont.showText(line1); ``` 文本使用`showText()`方法編寫。 ```java cont.newLine(); ``` 使用`newLine()`方法,我們移至下一行文本的開頭。 ## Java PDFBox 讀取文本 下一個示例從 PDF 文件讀取文本。 `JavaPdfBoxReadText.java` ```java package com.zetcode; import java.io.File; import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; public class JavaPdfBoxReadText { public static void main(String[] args) throws IOException { File myFile = new File("src/main/resources/wwii.pdf"); try (PDDocument doc = PDDocument.load(myFile)) { PDFTextStripper stripper = new PDFTextStripper(); String text = stripper.getText(doc); System.out.println("Text size: " + text.length() + " characters:"); System.out.println(text); } } } ``` 該示例打印 PDF 文檔的文本及其大小。 ```java File myFile = new File("src/main/resources/wwii.pdf"); try (PDDocument doc = PDDocument.load(myFile)) { ``` 我們從`src/main/resources`目錄加載 PDF 文檔。 ```java PDFTextStripper stripper = new PDFTextStripper(); String text = stripper.getText(doc); ``` `PDFTextStripper`用于從 PDF 文件提取文本。 ## Java PDFBox 創建圖像 下一個示例在 PDF 文檔中創建圖像。 `JavaPdfBoxCreateImage.java` ```java package com.zetcode; import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; public class JavaPdfBoxCreateImage { public static void main(String[] args) throws IOException { try (PDDocument doc = new PDDocument()) { PDPage myPage = new PDPage(); doc.addPage(myPage); String imgFileName = "src/main/resources/sid2.jpg"; PDImageXObject pdImage = PDImageXObject.createFromFile(imgFileName, doc); int iw = pdImage.getWidth(); int ih = pdImage.getHeight(); float offset = 20f; try (PDPageContentStream cont = new PDPageContentStream(doc, myPage)) { cont.drawImage(pdImage, offset, offset, iw, ih); } doc.save("src/main/resources/mydoc.pdf"); } } } ``` 該示例從目錄加載圖像,創建新的 PDF 文檔,然后將圖像添加到頁面中。 ```java String imgFileName = "src/main/resources/sid2.jpg"; PDImageXObject pdImage = PDImageXObject.createFromFile(imgFileName, doc); ``` `PDImageXObject`用于處理 PDFBox 中的圖像。 ```java int iw = pdImage.getWidth(); int ih = pdImage.getHeight(); ``` 我們得到圖像的寬度和高度。 ```java try (PDPageContentStream cont = new PDPageContentStream(doc, myPage)) { cont.drawImage(pdImage, offset, offset, iw, ih); } ``` `PDPageContentStream`的`drawImage()`將圖像繪制到頁面中。 ## Java PDFBox 文檔信息 PDF 文檔可以包含描述文檔本身或文檔中某些對象(例如文檔的作者或創建日期)的信息。 可以使用`PDDocumentInformation`對象設置和檢索基本信息。 `JavaPdfBoxDocumentInformation.java` ```java package com.zetcode; import java.io.IOException; import java.util.Calendar; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDDocumentInformation; import org.apache.pdfbox.pdmodel.PDPage; public class JavaPdfBoxDocumentInformation { public static void main(String[] args) throws IOException { try (PDDocument doc = new PDDocument()) { PDPage myPage = new PDPage(); doc.addPage(myPage); PDDocumentInformation pdi = doc.getDocumentInformation(); pdi.setAuthor("Jan Bodnar"); pdi.setTitle("World war II"); pdi.setCreator("Java code"); Calendar date = Calendar.getInstance(); pdi.setCreationDate(date); pdi.setModificationDate(date); pdi.setKeywords("World war II, conflict, Allies, Axis powers"); doc.save("src/main/resources/mydoc.pdf"); } } } ``` 該示例創建一些文檔信息元數據。 該信息可以在 PDF 查看器中的 PDF 文檔屬性中看到。 ```java PDDocumentInformation pdi = doc.getDocumentInformation(); ``` 我們得到`PDDocumentInformation`對象。 ```java pdi.setAuthor("Jan Bodnar"); pdi.setTitle("World war II"); pdi.setCreator("Java code"); ``` 我們設置一些元數據信息。 ## Java PDFBox 編寫元數據 可擴展元數據平臺(XMP)是用于創建,處理和交換數字文檔和數據集的標準化和自定義元數據的 ISO 標準。 PDF 文件使用 XMP 來存儲其他元數據信息。 `metadata.xml` ```java <?xml version="1.0" encoding="UTF-8"?> <x:xmpmeta xmlns:x="adobe:ns:meta/"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:dc="http://purl.org/dc/elements/1.1/"> <rdf:Description rdf:about=""> <dc:title>World war II</dc:title> <dc:date>2018-01-25</dc:date> <dc:author>Jan Bodnar</dc:author> </rdf:Description> </rdf:RDF> </x:xmpmeta> ``` 這是一個 XML 文檔,其中包含有關 PDF 文檔的一些基本元數據。 `JavaPdfBoxMetadataWrite.java` ```java package com.zetcode; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDDocumentCatalog; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.common.PDMetadata; public class JavaPdfBoxMetadataWrite { public static void main(String[] args) throws IOException { try (PDDocument doc = new PDDocument()) { PDPage myPage = new PDPage(); File myFile = new File("src/main/resources/metadata.xml"); try (InputStream is = Files.newInputStream(myFile.toPath())) { PDMetadata meta = new PDMetadata(doc, is); PDDocumentCatalog catalog = doc.getDocumentCatalog(); catalog.setMetadata(meta); doc.addPage(myPage); } doc.save("src/main/resources/mydoc.pdf"); } } } ``` 該示例從 XML 文件讀取元數據,并將其存儲在生成的二進制文檔中。 ```java PDMetadata meta = new PDMetadata(doc, is); ``` `PDMetadata`用于處理元數據。 ```java PDDocumentCatalog catalog = doc.getDocumentCatalog(); catalog.setMetadata(meta); ``` 我們將元數據設置為文檔的目錄。 ## Java PDFBox 讀取元數據 在下一個示例中,我們從 PDF 文檔中讀取元數據。 `JavaPdfBoxMetadataRead.java` ```java package com.zetcode; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDDocumentCatalog; import org.apache.pdfbox.pdmodel.common.PDMetadata; public class JavaPdfBoxMetadataRead { public static void main(String[] args) throws IOException { File myFile = new File("src/main/resources/sinatra.pdf"); try (PDDocument doc = PDDocument.load(myFile)) { PDDocumentCatalog catalog = doc.getDocumentCatalog(); PDMetadata metadata = catalog.getMetadata(); if (metadata == null) { System.err.println("No metadata in document"); System.exit(1); } try (InputStream is = metadata.createInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr)) { br.lines().forEach(System.out::println); } } } } ``` 該示例從 PDF 文檔讀取元數據,并將其打印到控制臺。 ```java PDDocumentCatalog catalog = doc.getDocumentCatalog(); PDMetadata metadata = catalog.getMetadata(); ``` 我們從`PDDocumentCatalog`中檢索`PDMetadata`。 ```java if (metadata == null) { System.err.println("No metadata in document"); System.exit(1); } ``` 該文檔可能不包含元數據; 因此,我們進行一些簡單的檢查。 ```java try (InputStream is = metadata.createInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr)) { br.lines().forEach(System.out::println); } ``` `createInputStream()`為文檔的元數據創建輸入流。 我們從該流中讀取數據并將其打印到終端。 在本教程中,我們展示了如何使用 PDFBox 庫在 Java 中使用 PDF 文件。 您可能也對相關教程感興趣: [Java JFreeChart 教程](/java/jfreechart/), [Java 2D 教程](/gfx/java2d/)或 [Java 教程](/lang/java/)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看