2 つのクラスで pdf を生成しようとしましたが、2 番目のクラスでドキュメントを生成する関数を呼び出す行に NullPointerException があるため、pdf を取得できません。最初のクラスには他にも多くの必要な機能があるため、pdf を生成するプロセスを分離します。この問題の原因はわかりません。
package org.ors.osc;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.ors.osc.Eml2Pdf2;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
public class Managepdf {
private Eml2Pdf2 eml2Pdf2;
public publishPdf2() {
Document doc = new Document();
File pdfFile = dataDir.resourcePdfFile(resource.getShortname());
OutputStream out = null;
try {
out = new FileOutputStream(pdfFile);
PdfWriter.getInstance(doc, out);
eml2Pdf2.writeEmlIntoPdf(doc); //In this part get null
} catch (Exception e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
このクラスは関数 writeEmlIntoPdf を呼び出します
package org.ors.oscar;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
public class Eml2Pdf2 {
public void writeEmlIntoPdf (Document doc) throws DocumentException, FileNotFoundException {
doc.open();
doc.add(new Paragraph("Hello World, iText!!"));
doc.add(new Paragraph(":D"));
doc.close();
}
}