0

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;
}
4

2 に答える 2