JavaでiTextPdfを使用して、他のpdfファイルから統合されたpdfを作成しています。一部の PDF ファイルには、非常に大きなページ サイズ (3200x2432) があります。その結果、ユーザーがドキュメントをスクロールすると、小さいページがサムネイルのように見えます。
PdfImported ページをすべて同じサイズにするにはどうすればよいですか?
ティア
解決済み: PdfCopy ではなく PdfWriter に切り替える。
新しいコード:
public static boolean CollecPdfs(Vector<File> pdfFiles, OutputStream pdfOutputStream)
{
try
{
Rectangle r=PageSize.LETTER;
// create intermediate output pdf in memory for new pages
Document odoc=new Document(r);
PdfWriter writer=PdfWriter.getInstance(odoc, pdfOutputStream);
odoc.open();
// add documents
for(File pdfFile : pdfFiles)
{
PdfReader reader=null;
try
{
FileInputStream is=new FileInputStream(pdfFile);
reader=new PdfReader(is);
int pgs=reader.getNumberOfPages();
PdfContentByte canvas=writer.getDirectContent();
for(int i=0; i<pgs;)
{
PdfImportedPage pg=writer.getImportedPage(reader, ++i);
float ws=PageSize.LETTER.getWidth()/pg.getWidth();
float hs=PageSize.LETTER.getHeight()/pg.getHeight();
canvas.addTemplate(pg,
ws, 0, 0,
hs, 0, 0);
odoc.newPage();
}
}
catch(ClientAbortException cex)
{
}
}
odoc.close();
}
catch(Exception e)
{
ExceptionRpt.sendStackTrace(e);
return false;
}
return true;
}
古いコード:
public static boolean CollecPdfs(Vector<File> pdfFiles, OutputStream pdfOutputStream)
{
try
{
Rectangle r=PageSize.LETTER;
Document odoc=new Document(r);
PdfCopy copy=new PdfCopy(odoc, pdfOutputStream);
odoc.open();
for(File pdfFile : pdfFiles)
{
PdfReader reader=null;
try
{
FileInputStream is=new FileInputStream(pdfFile);
reader=new PdfReader(is);
int pgs=reader.getNumberOfPages();
for(int i=0; i<pgs;)
{
PdfImportedPage pg=copy.getImportedPage(reader, ++i);
copy.addPage(pg);
}
}
catch(ClientAbortException cex)
{
}
copy.freeReader(reader);
}
odoc.close();
copy.close();
}
catch(Exception e)
{
ExceptionRpt.sendStackTrace(e);
return false;
}
return true;
}