使用itext在java中将Tiff转换为Pdf
我正在使用下面的代码将tiff转换为pdf 它适用于尺寸为850*1100的tiff图像。但当我尝试给出尺寸为的输入tiff图像(例如:-1574*732、684*353或其他850*1100)时,我得到以下错误。请帮助我如何将不同尺寸的tiff图像转换为pdf 以下代码出现错误。压缩JPEG仅支持单个条带。此图像有45条条纹。使用itext在java中将Tiff转换为Pdf,java,pdf,itext,tiff,pdfbox,Java,Pdf,Itext,Tiff,Pdfbox,我正在使用下面的代码将tiff转换为pdf 它适用于尺寸为850*1100的tiff图像。但当我尝试给出尺寸为的输入tiff图像(例如:-1574*732、684*353或其他850*1100)时,我得到以下错误。请帮助我如何将不同尺寸的tiff图像转换为pdf 以下代码出现错误。压缩JPEG仅支持单个条带。此图像有45条条纹。 RandomAccessFileOrArray myTifFile = null; com.itextpdf.text.Document tiffToPDF= null
RandomAccessFileOrArray myTifFile = null;
com.itextpdf.text.Document tiffToPDF= null;
PdfWriter pdfWriter = null;
try{
myTifFile = new RandomAccessFileOrArray(fileName);
int numberOfPages = TiffImage.getNumberOfPages(myTifFile);
tiffToPDF = new com.itextpdf.text.Document(PageSize.LETTER_LANDSCAPE);
String temp = fileName.substring(0, fileName.lastIndexOf("."));
pdfWriter = PdfWriter.getInstance(tiffToPDF, new FileOutputStream(temp+".pdf"));
pdfWriter.setStrictImageSequence(true);
tiffToPDF.open();
for(int tiffImageCounter = 1;tiffImageCounter <= numberOfPages;tiffImageCounter++)
{
Image img = TiffImage.getTiffImage(myTifFile, tiffImageCounter);
img.setAbsolutePosition(0,0);
img.scaleToFit(612,792);
tiffToPDF.add(img);
tiffToPDF.newPage();
}
}
RandomAccessFileOrArray myTifFile=null;
com.itextpdf.text.Document tifftopf=null;
PdfWriter PdfWriter=null;
试一试{
myTifFile=新的随机访问文件或阵列(文件名);
int numberOfPages=TiffImage.getNumberOfPages(myTifFile);
tiffToPDF=new com.itextpdf.text.Document(PageSize.LETTER_);
字符串temp=fileName.substring(0,fileName.lastIndexOf(“.”);
pdfWriter=pdfWriter.getInstance(tiffToPDF,新文件输出流(temp+“.pdf”);
pdfWriter.SetStritimagesequence(真);
tiffToPDF.open();
对于(int tiffImageCounter=1;tiffImageCounter,此代码将解释如何将tiff转换为pdf。有关更多信息,请参阅
import com.itextpdf.text.pdf.randomAccessFileOrray;
//读取Tiff文件,获取页数
导入com.itextpdf.text.pdf.codec.TiffImage;
//我们需要下面的库来写期末考试
//将图像转换为PDF的PDF文件
导入java.io.FileOutputStream;
//用于从Tiff图像中提取单独图像的图像类
导入com.itextpdf.text.Image;
//PdfWriter对象来编写PDF文档
导入com.itextpdf.text.pdf.PdfWriter;
//用于将逻辑图像文件添加到PDF的文档对象
导入com.itextpdf.text.Document;
公共类TiffToPDF{
公共静态void main(字符串参数[]){
试一试{
//读取Tiff文件
RandomAccessFileOrray myTiffFile=新的RandomAccessFileOrray(“c:\\java\\test.tif”);
//查找Tiff文件中的图像数
int numberOfPages=TiffImage.getNumberOfPages(myTiffFile);
System.out.println(“Tiff文件中的图像数”+页面数);
文档TifftoPDF=新文档();
getInstance(TifftoPDF,新文件输出流(“c:\\java\\tiff2Pdf.pdf”);
TifftoPDF.open();
//运行for循环以从Tiff文件提取图像
//并递归地添加到PDF中
对于(int i=1;iI已使用上述代码检查它适用于尺寸为850*1100的tiff图像。但它显示了不同尺寸tiff的错误。异常转换器:java.io.eofexception请参阅links@byr同时我也检查了链接,同样的错误仍然存在ytifile.read();但问题仍然存在。您能提供错误吗?请编辑您的问题以提供错误。异常转换器:com.lowagie.text.pdf.RandomAccessFileOrArray.readUnsignedShort(未知源)com.lowagie.text.pdf.codec.TIFFDirectory.GetNumDirectory(未知源)com.viewer.download.DocumentConversion.generatePDFFromTIF(DocumentConversion.java:218)com.viewer.download.DocumentConversion.main(DocumentConversion.java:271)上的com.lowagie.text.pdf.codec.TiffImage.getNumberOfPages(未知源代码)您使用的是什么iText版本?许多TIFF已损坏或与规范不符,我最近在iText中添加了回退。我看到您在这里的代码示例中使用了com.itextpdf.text.Document,但作为对答案的注释,您似乎使用了2.x:“com.lowagie.text.pdf.randomAccessFileOrray”。那么它是哪个版本呢?在我的代码中,我使用的是itextpdf-5.4.1.jar。你能分享你的TIFF吗?你能升级到5.5.2吗?我应该提到的是,仅使用iText可能不起作用。例外信息非常清楚:压缩JPEG仅支持一个条带。此图像有45条带。[链接].我将用最新版本替换jar并检查它。
import com.itextpdf.text.pdf.RandomAccessFileOrArray;
//Read Tiff File, Get number of Pages
import com.itextpdf.text.pdf.codec.TiffImage;
//We need the library below to write the final
//PDF file which has our image converted to PDF
import java.io.FileOutputStream;
//The image class to extract separate images from Tiff image
import com.itextpdf.text.Image;
//PdfWriter object to write the PDF document
import com.itextpdf.text.pdf.PdfWriter;
//Document object to add logical image files to PDF
import com.itextpdf.text.Document;
public class TiffToPDF {
public static void main(String args[]){
try{
//Read the Tiff File
RandomAccessFileOrArray myTiffFile=new RandomAccessFileOrArray("c:\\java\\test.tif");
//Find number of images in Tiff file
int numberOfPages=TiffImage.getNumberOfPages(myTiffFile);
System.out.println("Number of Images in Tiff File" + numberOfPages);
Document TifftoPDF=new Document();
PdfWriter.getInstance(TifftoPDF, new FileOutputStream("c:\\java\\tiff2Pdf.pdf"));
TifftoPDF.open();
//Run a for loop to extract images from Tiff file
//into a Image object and add to PDF recursively
for(int i=1;i<=numberOfPages;i++){
Image tempImage=TiffImage.getTiffImage(myTiffFile, i);
TifftoPDF.add(tempImage);
}
TifftoPDF.close();
System.out.println("Tiff to PDF Conversion in Java Completed" );
}
catch (Exception i1){
i1.printStackTrace();
}
}
}