如何防止PDF格式的页面大小调整? [英] How to prevent the resizing of pages in PDF?

查看:389
本文介绍了如何防止PDF格式的页面大小调整?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to have a pdf file that contains no difference between actual size vs fit to page at printing. I tried with the following example, but not works, only the width will be locked, not the height. Is there any solution?

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();
  }
}


推荐答案

请看看 PrintPreferences

Please take a look at the PrintPreferences example. In this example, several print preferences are explained. The line that is important to you, will make sure that the page isn't scaled when printed:

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

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

This is the only parameter you can set to influence the print setting. You can't tell a viewer that it needs to fit the page to the size of the printer page. You can only instruct the viewer that the actual size needs to be taken, by setting the PRINTSCALING to NONE.

如果你想要其他一些行为,你会要求在PDF中找不到的东西。

If you want some other behavior, you're asking for something that is impossible in PDF.

这篇关于如何防止PDF格式的页面大小调整?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆