如何防止在PDF中调整页面大小?

如何防止在PDF中调整页面大小?,pdf,itext,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.PageS

我想有一个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();
  }
}
请看一看这个例子。在此示例中,解释了几个打印首选项。对您很重要的行将确保打印时页面不会缩放:

writer.addViewerPreference(PdfName.PRINTSCALING, PdfName.NONE);
这是唯一可以设置以影响打印设置的参数。您不能告诉查看器它需要使页面适合打印机页面的大小。您只能通过将
printclassing
设置为
NONE
来指示查看者需要采用实际尺寸


如果你想要其他行为,你是在要求PDF中不可能的东西。

(1)查看导入,并将第二部分(lowagie)与我的名字(Bruno lowagie)进行比较。我的名字出现在你的代码中这一事实意味着你正在使用我曾经编写的软件,而这个软件现在被认为已经过时了。请参阅升级。(2) 您正在创建的页面大小为A4(8.267 x 11.692英寸)。您正在创建一个尺寸为400 x 490(5.55 x 6.81英寸)的表格。上边框为50(0.69英寸),左右边框为97.5(1.35英寸),下边框为352(4.88英寸)。你的问题是什么?您是否希望将
打印缩放
设置为
?如果选择以实际大小或适合页面打印,我希望具有相同的输出。您首先要升级iText版本!不幸的是,
writer.addViewerPreference(PdfName.PRINTSCALING,PdfName.NONE)无效。与实际大小相比,页面上有一些合适的页边距,内容的位置也各不相同。@CristiB.-根据我设置上述属性的短暂经验,Adobe Reader成功读取此属性并在打印对话框中设置“实际页面”。另一方面,Chrome的PDF查看器似乎忽略了它,并将其“适合页面”设置设置为上一次打印作业中设置的内容。