如何防止PDF格式的页面大小调整?

时间:2014-06-06 14:29:18

标签: pdf itext

我想要一个pdf文件,在打印时实际尺寸与适合页面之间没有区别。 我尝试使用以下示例,但不起作用,只会锁定宽度,而不是高度。 有没有解决方案?

package etiq;

import java.io.FileOutputStream;

import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.Element;
import com.lowagie.text.PageSize;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;

public class TestHeight {
  public static void main(String[] args) {
    Document document = new Document(PageSize.A4, 50, 50, 50, 50);
    try {
        String path = "D:\\test.pdf";
        FileOutputStream output = new FileOutputStream(path);
      PdfWriter writer = PdfWriter.getInstance(document, output);
      document.open();

      PdfPTable table = new PdfPTable(2);
      table.setTotalWidth(400);
      table.setLockedWidth(true);
      table.getDefaultCell().setBorder(Rectangle.NO_BORDER);
      table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
      table.getDefaultCell().setVerticalAlignment(Element.ALIGN_MIDDLE);
      table.getDefaultCell().setFixedHeight(70);
      table.addCell("!");
      table.addCell("Text Text Text Text Text Text ");
      table.addCell(new Phrase(new Chunk("cell")));
      table.addCell("Text Text ");
      table.addCell(new Phrase(new Chunk("cell")));
      table.addCell("Text Text Text ");
      table.addCell(new Phrase(new Chunk("cell")));
      table.addCell("Text \nText \nText ");
      table.addCell(new Phrase(new Chunk("cell")));
      table.addCell("Text ");
      table.addCell(new Phrase(new Chunk("cell")));
      table.addCell("Text ");
      table.addCell(new Phrase(new Chunk("cell")));
      table.addCell("Text ");
      table.addCell(new Phrase(new Chunk("cell")));
      document.add(table);

    } catch (Exception de) {
      de.printStackTrace();
    }
    document.close();
  }
}

1 个答案:

答案 0 :(得分:1)

请查看PrintPreferences示例。在此示例中,解释了几个打印首选项。对您来说重要的一行将确保在打印时不缩放页面:

writer.addViewerPreference(PdfName.PRINTSCALING, PdfName.NONE);

这是您可以设置的唯一参数,以影响打印设置。您无法告诉查看者它需要使页面符合打印机页面的大小。您只能通过将PRINTSCALING设置为NONE来指示查看者需要采用的实际尺寸。

如果您想要其他一些行为,那么您需要在PDF中找不到的东西。