答案评论中的链接不再有效,但我认为这是更新的链接。我用这些信息和一些小的调整让它工作。
我是这样做的。添加这样的事件处理程序:
pdfDocument.AddEventHandler(PdfDocumentEvent.END_PAGE, pageNumberHandler);
下面是我在C#中的事件处理程序代码:
using iText.Kernel.Events;
using iText.Kernel.Geom;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas;
using iText.Kernel.Pdf.Xobject;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
using NLog;
namespace PrintLibrary.iTextEvent
{
public class PageNumberHandler : IEventHandler
{
private ILogger Logger => _logger ?? (_logger = LogManager.GetCurrentClassLogger());
private readonly PdfFormXObject _totalPagesPlaceHolder = new PdfFormXObject(new Rectangle(0, 0,40,20));
public void HandleEvent(Event e)
{
var docEvent = (PdfDocumentEvent)e;
var pdf = docEvent.GetDocument();
var pageCount = pdf.GetNumberOfPages();
if (pageCount <= 1)
{
// return here because I don't want page 1 of 1 printing, but only when it's more than 1 page
Logger.Trace("Only 1 page in document, returning");
return;
}
Logger.Trace($"Run {nameof(HandleEvent)}");
var page = docEvent.GetPage();
var currentPageNumber = pdf.GetPageNumber(page);
var pageSize = page.GetPageSize();
var pdfCanvas = new PdfCanvas(page);
var canvas = new Canvas(pdfCanvas, pageSize);
var p = new Paragraph()
.Add($"Page {currentPageNumber}");
Logger.Trace($"Printing text to page, current page # {currentPageNumber}");
var x = pageSize.GetWidth() / 2;
var y = pageSize.GetBottom() + 20;
canvas.ShowTextAligned(p,
x, y, TextAlignment.RIGHT);
canvas.Close();
pdfCanvas.AddXObjectAt(_totalPagesPlaceHolder, x, y);
pdfCanvas.Release();
}
public void WriteTotal(PdfDocument pdf)
{
var pages = pdf.GetNumberOfPages();
if (pages <= 1) return;
Logger.Trace($"Setting total number of pages on footer to {pages}");
var canvas = new Canvas(_totalPagesPlaceHolder, pdf);
canvas.ShowTextAligned($"of {pages}", 3f, 0, TextAlignment.LEFT);
canvas.Close();
}
private ILogger _logger;
}
}
我有一本书的多份副本。不同用户评论的pdf文档。我想把所有这些评论合并成一个新的pdf“合并”。 我在一个名为“路径”和“目录”属性的文档类中编写了这个子类。 这段代码导致了一个我无法解决的异常。 iText。内核PDFEException:“Pdf间接对象属于其他Pdf文档。将对象复制到当前pdf文档。' 要执行此任务,我需要更改什么?还是我完全摆脱了我的代码块?
环境 期望的行为 我想更新文档并返回原始文档。 实际行为 正在返回更新的文档,而不是原始文档。 我试过的 起初,我在查看findAndModify: http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#findAndModify 然而,那里的文档表示它已被弃用,并使用findOneAndUpdate、findOn
问题内容: 我正在搜索索引中的文档,然后尝试通过获取其中的一些文档。尽管收到了一组结果,但是某些文档无法通过简单的get来检索。更糟糕的是,我可以通过URI搜索获得相同的文档,其中 例如,运行一个简单的GET 给我结果: 但是,如果我使用相同的_id进行搜索: 我得到了预期的结果: 我正在通过Stretcher ruby API索引文档,索引后立即进行刷新。我的本地设置是 2个节点 。我正在运
问题内容: 如果将来我使用setMaxAge()设置cookie,那么当我在后续请求中将cookie读回内存时,getMaxAge()会返回-1。我已经通过Chrome的设置和检查器检查了实际的cookie,并且可以验证该过期日期确实设置为将来的60天。 为什么c.getMaxAge()总是返回-1? 问题答案: 浏览器不会发送cookie属性,例如路径和过期。它仅将名称和值发送回去。如果最大期限
问题内容: 我以前使用过媒体播放器,但从未遇到过此问题。每当我尝试使用MediaPlayer.create()时,该方法都会使我为null,并且无法播放声音。有什么我想念的吗? 我的sound.mp3在我的原始文件夹中,通过将声音拖到eclipse中的文件夹中,我将其放置在其中。请帮忙,因为我以前玩过声音,所以这真的困扰我:( 问题答案: 如果create() API由于某种原因失败,则返回nul
问题内容: 尽管是有效的类,但以下代码会打印。 文档说方法返回 由 aClassName 命名的类对象,或者如果当前没有加载该名称的类。如果 aClassName 为,则返回。 我也试图获得当前的viewcontroller已加载但仍然得到 可能是什么问题? 更新: 即使尝试这样做,我仍然可以 问题答案: 该函数 确实 适用于(纯和Objective-C派生的)swift类,但是仅当您使用全限定名