Java Android中的iText合并pdf错误
该代码在Java应用程序中运行良好。但当我转到安卓系统时,我无法编译。错误消息:“无法解析类型java.awt.geom.AffineTransform。它是从所需的.class文件中间接引用的”,行:Java Android中的iText合并pdf错误,java,android,itext,Java,Android,Itext,该代码在Java应用程序中运行良好。但当我转到安卓系统时,我无法编译。错误消息:“无法解析类型java.awt.geom.AffineTransform。它是从所需的.class文件中间接引用的”,行: cb.addTemplate(page, 0, 0);//compile error at this line 然后我试着对上面的一行进行注释……但发生的是,这次合并的pdf文件是在Android中创建的,但里面什么都没有……只有空白页面 这是使用的代码。感谢您的帮助。(同时尝试分别使用dro
cb.addTemplate(page, 0, 0);//compile error at this line
然后我试着对上面的一行进行注释……但发生的是,这次合并的pdf文件是在Android中创建的,但里面什么都没有……只有空白页面
这是使用的代码。感谢您的帮助。(同时尝试分别使用droidText和普通iText罐子…仍然没有成功)
public void concatPDFs(){
文档=新文档();
试一试{
uploadedFile.setVisibility(View.VISIBLE);
文件sdCard=Environment.getExternalStorageDirectory();
uploadedFile.setText(sdCard.getAbsolutePath());
List pdfs=new ArrayList();
add(新文件输入流(“/storage/extSdCard/1.pdf”);
add(新文件输入流(“/storage/extSdCard/2.pdf”);
outputStream=新文件outputStream(“/storage/extSdCard/merge.pdf”);
uploadedFile.setText(“添加的文件”);
列表读取器=新的ArrayList();
int totalPages=0;
迭代器迭代器DFS=pdfs.Iterator();
//为PDF创建读卡器。
while(iteratorPDFs.hasNext()){
InputStream pdf=iteratorPDFs.next();
PdfReader PdfReader=新PdfReader(pdf);
readers.add(pdfReader);
totalPages+=pdfReader.getNumberOfPages();
}
//为outputstream创建写入程序
PdfWriter writer=PdfWriter.getInstance(文档,outputStream);
uploadedFile.setText(“PdfWriter”);
document.open();
BaseFont bf=BaseFont.createFont(BaseFont.HELVETICA,
BaseFont.CP1252,BaseFont.NOT_EMBEDDED);
PdfContentByte cb=writer.getDirectContent();//保存PDF文件
//资料
PDF导入页面;
int currentPageNumber=0;
int pageOfCurrentReaderPDF=0;
Iterator IteratorPDReader=readers.Iterator();
//循环浏览PDF文件并添加到输出中。
while(iteratorPDReader.hasNext()){
PdfReader PdfReader=iteratorpdfreeader.next();
//在目标中为每个源页面创建一个新页面。
而(pageOfCurrentReaderPDF
基本上,没有java.awt.
软件包受Android支持,Android中包含的来自awt的唯一软件包是java.awt.font
参考:
基本上,没有
java.awt.
软件包受Android支持,Android中唯一包含的awt软件包是java.awt.font
参考:
我对前面的答案投了赞成票,但我想补充一点,user614454使用的是Java版本的iText,而不是官方的Android端口。官方Android端口可在此处找到: 在这个官方的Android端口中,iText所需的所有java.awt类都被轻量级的替代品所取代
请注意,我是iText的原始作者。我删除了对DroidText的引用,因为这是一个不应该再使用的iText版本的Android端口:我对前面的答案投了反对票,但我想补充一点,user614454使用的是Java版本的iText,而不是官方的Android端口。官方Android端口可在此处找到: 在这个官方的Android端口中,iText所需的所有java.awt类都被轻量级的替代品所取代
请注意,我是iText的原始作者。我删除了对DroidText的引用,因为它是iText版本的Android端口,不应该再使用了:感谢您的澄清!谢谢你的澄清!
public void concatPDFs() {
Document document = new Document();
try {
uploadedFile.setVisibility(View.VISIBLE);
File sdCard = Environment.getExternalStorageDirectory();
uploadedFile.setText(sdCard.getAbsolutePath());
List<InputStream> pdfs = new ArrayList<InputStream>();
pdfs.add(new FileInputStream("/storage/extSdCard/1.pdf"));
pdfs.add(new FileInputStream("/storage/extSdCard/2.pdf"));
outputStream = new FileOutputStream("/storage/extSdCard/merge.pdf");
uploadedFile.setText("Added Files");
List<PdfReader> readers = new ArrayList<PdfReader>();
int totalPages = 0;
Iterator<InputStream> iteratorPDFs = pdfs.iterator();
// Create Readers for the pdfs.
while (iteratorPDFs.hasNext()) {
InputStream pdf = iteratorPDFs.next();
PdfReader pdfReader = new PdfReader(pdf);
readers.add(pdfReader);
totalPages += pdfReader.getNumberOfPages();
}
// Create a writer for the outputstream
PdfWriter writer = PdfWriter.getInstance(document, outputStream);
uploadedFile.setText("PdfWriter");
document.open();
BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA,
BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
PdfContentByte cb = writer.getDirectContent(); // Holds the PDF
// data
PdfImportedPage page;
int currentPageNumber = 0;
int pageOfCurrentReaderPDF = 0;
Iterator<PdfReader> iteratorPDFReader = readers.iterator();
// Loop through the PDF files and add to the output.
while (iteratorPDFReader.hasNext()) {
PdfReader pdfReader = iteratorPDFReader.next();
// Create a new page in the target for each source page.
while (pageOfCurrentReaderPDF < pdfReader.getNumberOfPages()) {
document.newPage();
pageOfCurrentReaderPDF++;
currentPageNumber++;
page = writer.getImportedPage(pdfReader,
pageOfCurrentReaderPDF);
cb.addTemplate(page, 0, 0);
uploadedFile.setText("getImportedPage");
// Code for pagination.
if (true) {
cb.beginText();
cb.setFontAndSize(bf, 9);
cb.showTextAligned(PdfContentByte.ALIGN_CENTER, ""
+ currentPageNumber + " of " + totalPages, 520,
5, 0);
cb.endText();
}
}
pageOfCurrentReaderPDF = 0;
}
outputStream.flush();
document.close();
outputStream.close();
uploadedFile.setText("Done Pdf");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (document.isOpen())
document.close();
try {
if (outputStream != null)
outputStream.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}