次のコードを使用して、複数のマルチページtifファイルをpdfに変換しています。複数のマルチページTIFFファイルを1つのpdfにマージするには?
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.apache.log4j.Logger;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
public class TifToPdf {
public static void main(String args[])
{
String src = "/input/";//path of the folder containing multiple tif files where each tif has multiple pages"
File folder = new File(src);
try
{
// Creating a new pdf
OutputStream file = new FileOutputStream(new File("output.pdf"));
//Adding images in PDF
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, file);
document.open();
PdfPTable table = new PdfPTable(1);
table.setWidthPercentage(100); //Width 100%
table.setSpacingBefore(10f); //Space before table
table.setSpacingAfter(10f); //Space after table
//Set Column widths
float[] columnWidths = {10f};
table.setWidths(columnWidths);
for (final File fileEntry : folder.listFiles())
{
Image image = Image.getInstance(src + "/" + fileEntry.getName());
PdfPCell cell1 = new PdfPCell(image,true);
cell1.setBorderColor(BaseColor.WHITE);
cell1.setPaddingBottom(100);
cell1.setHorizontalAlignment(Element.ALIGN_CENTER);
cell1.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(cell1);
}
document.add(table);
document.close();
writer.close();
} catch(FileNotFoundException ex){
System.out.println("Error in locating folder in local to import files "+ex.getMessage());
}catch (Exception e){
System.out.println("Error in merging tiff files to pdfs "+e.getMessage());
}
}
}
"output.pdf"には、マージされたすべてのtifファイルが含まれています。しかし、各tifファイルの最初のページだけがpdfにマージされます。残りのページは無視されます。たとえば、 "/ input /"に1.tif、2.tif、3.tif、および1.tifが含まれている場合は3ページ、2.tifには2ページ、3ページにはconatins 1ページ、次にすべてのこれらのtifファイルはpdfにマージされます。 「ジャイ」ジャーを使いたくないです。何が問題なのかを教えてください。
はさえ私は、次のことを試してみました
Image images = Image.getInstance(src + "/" + fileEntry.getName());
for (Image image : images) {
PdfPCell cell1 = new PdfPCell(image,true);
cell1.setBorderColor(BaseColor.WHITE);
cell1.setPaddingBottom(100);
cell1.setHorizontalAlignment(Element.ALIGN_CENTER);
cell1.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(cell1);
}
しかし、私は画像のインスタンスを通過することはできませんよ。
ファイルごとに1つの画像のみを追加します。ファイル内のすべてのイメージに対してこれを行う必要があります。 –
@ThorbjørnRavn Andersen私は毎回画像のインスタンスを走査しようとしました。しかし、私はそれをすることができません。親切にも私の更新されたコードを見てください。それは正しい方法ですか? –