如何设置初始视图属性?

Thi*_*san 9 itext itextsharp

这里我想在acrobat的Initial View选项卡下设置已存在的PDF文档属性.

文件选项:

  • 显示=书签面板和页面
  • 页面布局=连续
  • 放大倍数=适合宽度
  • 打开页码= 1

窗口选项:

  • 显示=文档标题

如下面的屏幕截图所示:

我尝试下面的代码:

PdfStamper stamper = new PdfStamper(reader, new FileStream(dPDFFile, FileMode.Create));
stamper.AddViewerPreference(PdfName.DISPLAYDOCTITLE, new PdfBoolean(true));
Run Code Online (Sandbox Code Playgroud)

上面的代码用于设置文档标题显示.

但是下面的代码不起作用

对于页面布局:

stamper.AddViewerPreference(PdfName.PAGELAYOUT, new PdfName("OneColumn"));
Run Code Online (Sandbox Code Playgroud)

对于书签面板和页面:

stamper.AddViewerPreference(PdfName. PageMode, new PdfName("UseOutlines"));
Run Code Online (Sandbox Code Playgroud)

所以请指导我什么是满足我的要求的正确方法.

Bru*_*gie 9

我在回答前一个答案的评论中的额外问题时添加了一个额外的答案:

当您有一个PdfWriter名为的实例时writer,您可以像这样设置Viewer首选项:

writer.ViewerPreferences = viewerpreference;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,该viewerpreference值可以具有以下值之一:

  • PdfWriter.PageLayoutSinglePage
  • PdfWriter.PageLayoutOneColumn
  • PdfWriter.PageLayoutTwoColumnLeft
  • PdfWriter.PageLayoutTwoColumnRight
  • PdfWriter.PageLayoutTwoPageLeft
  • PdfWriter.PageLayoutTwoPageRight

有关详细信息,请参阅PageLayoutExample.

您还可以更改页面模式,如ViewerPreferencesExample中所示.在这种情况下,不同的值是"OR" - :

  • PdfWriter.PageModeFullScreen
  • PdfWriter.PageModeUseThumbs
  • PdfWriter.PageLayoutTwoColumnRight | PdfWriter.PageModeUseThumbs
  • PdfWriter.PageModeFullScreen | PdfWriter.NonFullScreenPageModeUseOutlines
  • PdfWriter.FitWindow | PdfWriter.HideToolbar
  • PdfWriter.HideWindowUI

目前,您只使用了官方文档中的PrintPreferences示例:

writer.AddViewerPreference(PdfName.PRINTSCALING, PdfName.NONE);
writer.AddViewerPreference(PdfName.NUMCOPIES, new PdfNumber(3));
writer.AddViewerPreference(PdfName.PICKTRAYBYPDFSIZE, PdfBoolean.PDFTRUE); 
Run Code Online (Sandbox Code Playgroud)

但在某些情况下,它更容易使用:

writer.ViewerPreferences = viewerpreference;
Run Code Online (Sandbox Code Playgroud)

请注意,官方文档是"iText in Action - Second Edition"一书.这些示例是用Java编写的,但您可以在这里找到C#版本.有一本名为"PDF的ABC"的新书,但到目前为止只写了4章.您可以在这里找到更多信息:http://itextpdf.com/learn

关于创建a的不同选项的部分PdfDestination已经出现在"PDF的ABC"中.

至于设置语言,这样做:

stamper.Writer.ExtraCatalog.Put(PdfName.LANG, new PdfString("EN"));
Run Code Online (Sandbox Code Playgroud)

结果显示在以下屏幕截图中:

在此输入图像描述

如您所见,现在有一个Lang条目EN添加到目录中.


Chr*_*aas 7

显示=书签面板和页面以及页面布局=连续两个项目从ViewerPreferences文档中的一层向上控制/Catalog.你可以通过以下方式获得:

stamper.Writer.ExtraCatalog
Run Code Online (Sandbox Code Playgroud)

在您的情况下,您正在寻找:

// Acrobat's Single Page
stamper.Writer.ExtraCatalog.Put(PdfName.PAGELAYOUT, PdfName.ONECOLUMN);
// Show bookmarks
stamper.Writer.ExtraCatalog.Put(PdfName.PAGEMODE, PdfName.USEOUTLINES);
Run Code Online (Sandbox Code Playgroud)

项目Magnification = Fit WidthOpen to Page number = 1也是一部分,/Catalog但在一个名为的特殊键中/OpenAction.您可以使用以下方式设置:

stamper.Writer.SetOpenAction();
Run Code Online (Sandbox Code Playgroud)

在您的情况下,您正在寻找:

//Create a destination that fit's width (fit horizontal)
var D = new PdfDestination(PdfDestination.FITH);

//Create an open action that points to a specific page using this destination
var OA = PdfAction.GotoLocalPage(1, D, stamper.Writer);

//Set the open action on the writer
stamper.Writer.SetOpenAction(OA);
Run Code Online (Sandbox Code Playgroud)