2013-07-10 119 views

回答

1

如果您想在每個頁面上使用lanscape,請不要在@page規則中使用任何選擇器。

只需使用:

@page {size: landscape;} 

這將適用於整個文件,而不會在文檔中添加空白頁。

+0

謝謝@obourgain –

1

如果您想在同一文檔中使用替代肖像/風景佈局(即第一頁是人像,其餘是風景),則需要爲每個@page規則指定一個實際寬度和高度,否則飛碟會產生額外的白頁(按照bug)。

什麼工作對我來說:

CSS:

@page { 
    size: a4 portrait; 
} 

@page land { size: a4 landscape;} 
.landscapePage { page:land; height: 21cm; width: 28.6cm} 

HTML:

<div> 
    Portrait content here 
</div> 
<span class="pageBreak"/> 
<div class="landscapePage"> 
    landscape content page 1 
    <span class="pageBreak"/> 
    landscape content page 2 
</div> 
0

對於來自.vm文件製作PDF我面臨着同樣的問題。在我的情況下刪除: 寬度:100%; 身高:100%;來自body {012}的 幫助擺脫了額外的頁面。希望它對其他人也許有用。

0
public class HeaderFooterPageEvent extends PdfPageEventHelper { 

     private PdfTemplate t; 
     private Image total; 
     @Override 
     public void onOpenDocument(PdfWriter writer, Document document) { 
      super.onOpenDocument(writer, document); 
      System.out.println("On Open"); 
      t = writer.getDirectContent().createTemplate(30, 16); 
      try { 
       total = Image.getInstance(t); 
       // total.setRole(new PdfName("Artifact")); 
      } catch (DocumentException de) { 
       throw new ExceptionConverter(de); 
      } 
     } 
    @Override 
     public void onEndPage(PdfWriter writer, Document document) { 
      // addHeader(writer); 
      addFooter(writer); 
     } 
     private void addFooter(PdfWriter writer){ 
      System.out.println("addFooter Called***************"); 
      PdfPTable footer = new PdfPTable(3); 
      try { 
       // set defaults 
       footer.setWidths(new int[]{24, 2, 1}); 
       footer.setTotalWidth(527); 
       footer.setLockedWidth(true); 
       footer.getDefaultCell().setFixedHeight(40); 
       footer.getDefaultCell().setBorder(Rectangle.TOP); 
       footer.getDefaultCell().setBorderColor(Color.LIGHT_GRAY); 

       // add copyright 
    footer.addCell(new Phrase("", new Font(Font.HELVETICA, 12, Font.BOLD))); 
    footer.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT); 
       footer.addCell(new Phrase(String.format("Page %d of", writer.getPageNumber()), new Font(Font.HELVETICA, 8))); 
       PdfPCell totalPageCount = new PdfPCell(total); 
       totalPageCount.setBorder(Rectangle.TOP); 
       totalPageCount.setBorderColor(Color.LIGHT_GRAY); 
       System.out.println("TOTAL PageCount: "+totalPageCount); 
       footer.addCell(totalPageCount); 
       // write page 
       PdfContentByte canvas = writer.getDirectContent(); 
       canvas.beginText(); 
       footer.writeSelectedRows(0,-1, 34, 50, canvas); 
       canvas.endText(); 
      } catch(DocumentException de) { 
       throw new ExceptionConverter(de); 
      } 
     } 

@Override 
    public void onCloseDocument(PdfWriter writer, Document document) { 
     System.out.println("On Close"); 
     int totalLength = String.valueOf(writer.getPageNumber()).length(); 
     int totalWidth = totalLength * 5; 
     ColumnText.showTextAligned(t, Element.ALIGN_RIGHT, 
       new Phrase(String.valueOf(writer.getPageNumber()-1), new Font(Font.HELVETICA, 8)), 
       totalWidth, 6, 0); 
    }