我正在维护一个使用 iText 2.1.7 创建 PDF 的 Web 应用程序。我想将现有 PDF 的内容放入代码正在创建的 PDF 文档中。以下是我的代码(编辑:更完整的代码):
package itexttest;
import com.lowagie.text.Document;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfCopy;
import com.lowagie.text.pdf.PdfImportedPage;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfWriter;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
public class ITextTest
{
public static void main(String[] args)
{
try
{
ByteArrayOutputStream os = new ByteArrayOutputStream();
Document bigDoc = new Document(PageSize.LETTER, 50, 50, 110, 60);
PdfWriter writer = PdfWriter.getInstance(bigDoc, os);
bigDoc.open();
Paragraph par = new Paragraph("one");
bigDoc.add(par);
bigDoc.add(new Paragraph("three"));
addPdfPage(bigDoc, os, "c:/insertable.pdf");
bigDoc.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
private static void addPdfPage(Document document, OutputStream outputStream, String location) {
try {
PdfReader pdfReader = new PdfReader(location);
int pages = pdfReader.getNumberOfPages();
PdfCopy pdfCopy = new PdfCopy(document, outputStream);
PdfImportedPage page = pdfCopy.getImportedPage(pdfReader, 1);
pdfCopy.addPage(page);
}
catch (Exception e) {
System.out.println("Cannot add PDF from PSC: <" + location + ">: " + e.getMessage());
e.printStackTrace();
}
}
}
这会抛出一个错误,从 PdfWriter.getPageReference()
返回 null。
我使用方法有误吗?如何将现有文档中的页面放入当前文档中?请注意,我不方便将其写入文件作为临时存储或其他方式。
PdfWriter.getPageReference()
的 null 值。我没有看到你在代码中使用这个方法。你的代码在哪里出现了异常? - mkl