java - Itext7 最基本的 hello world 示例 - 怎么样?
问题描述
所以我从https://github.com/itext/itext7/releases/latest下载了编译好的 itext jar 文件 ,并将它们放在与 iText 示例 C01E01_HelloWorld.java 相同的文件夹中,但是当我运行时
javac C01E01_HelloWorld.java
我明白了
$ javac C01E01_HelloWorld.java
C01E01_HelloWorld.java:3: error: package com.itextpdf.kernel.pdf does not exist
import com.itextpdf.kernel.pdf.PdfDocument;
^
C01E01_HelloWorld.java:4: error: package com.itextpdf.kernel.pdf does not exist
import com.itextpdf.kernel.pdf.PdfWriter;
^
C01E01_HelloWorld.java:5: error: package com.itextpdf.layout does not exist
import com.itextpdf.layout.Document;
^
C01E01_HelloWorld.java:6: error: package com.itextpdf.layout.element does not exist
import com.itextpdf.layout.element.Paragraph;
^
C01E01_HelloWorld.java:25: error: cannot find symbol
PdfWriter writer = new PdfWriter(dest);
^
symbol: class PdfWriter
location: class C01E01_HelloWorld
C01E01_HelloWorld.java:25: error: cannot find symbol
PdfWriter writer = new PdfWriter(dest);
^
symbol: class PdfWriter
location: class C01E01_HelloWorld
C01E01_HelloWorld.java:28: error: cannot find symbol
PdfDocument pdf = new PdfDocument(writer);
^
symbol: class PdfDocument
location: class C01E01_HelloWorld
C01E01_HelloWorld.java:28: error: cannot find symbol
PdfDocument pdf = new PdfDocument(writer);
^
symbol: class PdfDocument
location: class C01E01_HelloWorld
C01E01_HelloWorld.java:31: error: cannot find symbol
Document document = new Document(pdf);
^
symbol: class Document
location: class C01E01_HelloWorld
C01E01_HelloWorld.java:31: error: cannot find symbol
Document document = new Document(pdf);
^
symbol: class Document
location: class C01E01_HelloWorld
C01E01_HelloWorld.java:34: error: cannot find symbol
document.add(new Paragraph("Hello World!"));
^
symbol: class Paragraph
location: class C01E01_HelloWorld
11 errors
我也试过
javac -cp /home/user01/itext/demo/ C01E01_HelloWorld.java
即 -cp 指向 iText jar(和 C01E01_HelloWorld.java)的位置,结果相同。如何让导入行知道和使用 iText jar 文件?
或者这不能以简单的方式完成并且需要eclipse或maven或?
所以我运行以下没有错误
javac -cp kernel-7.1.13.jar:layout-7.1.13.jar:io-7.1.13.jar C01E01_HelloWorld.java
如果我遗漏了任何 jar 文件,则会导致与丢失 jar 相关的错误。但是当我尝试
java C01E01_HelloWorld
我明白了
Error: Unable to initialize main class C01E01_HelloWorld
Caused by: java.lang.NoClassDefFoundError: com/itextpdf/layout/element/IBlockElement
我也试过
java -cp kernel-7.1.13.jar:layout-7.1.13.jar:io-7.1.13.jar C01E01_HelloWorld
这略有不同
Error: Could not find or load main class C01E01_HelloWorld
Caused by: java.lang.ClassNotFoundException: C01E01_HelloWorld
所以下一步产生
$ java -cp kernel-7.1.13.jar:layout-7.1.13.jar:io-7.1.13.jar:. C01E01_HelloWorld
Exception in thread "main" java.lang.NullPointerException at C01E01_HelloWorld.main(C01E01_HelloWorld.java:21)
我的来源是
/*package tutorial.chapter01;*/
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import java.io.File;
import java.io.IOException;
/**
* Simple Hello World example.
*/
public class C01E01_HelloWorld {
/* public static final String DEST = "results/chapter01/hello_world.pdf"; */
public static final String DEST = "hello_world.pdf";
public static void main(String args[]) throws IOException {
File file = new File(DEST);
file.getParentFile().mkdirs();
new C01E01_HelloWorld().createPdf(DEST);
}
public void createPdf(String dest) throws IOException {
//Initialize PDF writer
PdfWriter writer = new PdfWriter(dest);
//Initialize PDF document
PdfDocument pdf = new PdfDocument(writer);
// Initialize document
Document document = new Document(pdf);
//Add paragraph to the document
document.add(new Paragraph("Hello World!"));
//Close document
document.close();
}
}
解决方案
- 安装一个像样的 IDE,比如 IntelliJ IDEA Community Edition。
- 克隆包含示例的 GitHub 存储库:
git clone https://github.com/itext/i7js-jumpstart
- 在 IntelliJ 中,打开
pom.xml
刚刚克隆的 repo 目录中的 。IntelliJ 会询问您是否要将其作为 Maven 项目打开。 - 在 IntelliJ 的左侧,您可以看到项目中所有文件的树形视图。转到文件
src/main/java/tutorial/chapter01/C01E01_HelloWorld.java
。 - 运行示例(
main
方法)。
推荐阅读
- c# - Windows 窗体最小化
- python - 有没有合适的方法让 web2py 使用 Python3 而不是 Python2?
- c# - 使用 NetSuitePortTypeClient 初始化 NetSuite 客户端
- django - 当我使用 Django 保存数据时,在 PostgreSQL 中使用触发器(AFTER INSERT)保存的数据被删除
- c# - 如何在 C# 中将声明作为标志(布尔)添加到 SystemUser
- azure - Azure 服务总线 SendAsync 不在控制台应用程序中发送消息
- microsoft-cognitive - Microsoft 表单识别器 api 返回 3003 OCR 提取错误
- java - 每次选择新项目时打印选定的组合框项目
- javascript - 在 React 中清理嵌套的 Select
- yocto - 我可以让 MSYS2 适合 yocto 编译吗?