复印文件时的空白页 [英] Blank page when copy document

查看:173
本文介绍了复印文件时的空白页的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我复制文件时

var document = new Document();

    var writer = PdfWriter.GetInstance(document, memoryStream);
    document.Open();
    var cb = writer.DirectContent;
    var reader = new PdfReader(this_file_name);
    document.SetPageSize(reader.GetPageSizeWithRotation(1));
    document.NewPage();
    var page = writer.GetImportedPage(reader, 1);
    cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);
    document.CloseDocument();       writer.Close();

当我打开新文档时 - 它是空的。
我尝试更改pdf版本和压缩级别 - 没有结果。
我不能使用PdfStamper,因为复制文件后需要插入一些文字和图像。这个糟糕的文件

When I open new document - it's empty. I try change pdf version and compression level - no results. I can't use PdfStamper, bacause after copy document need insert some text and image.this bad file

推荐答案

PDF是一个很好的例子,为什么它永远不是一个好主意假设 0,0 对应于左下角。 PDF实际上可以自由地重新定义他们认为合适的坐标空间。该PDF具有第1页的特定条目:

That PDF is a good example of why it is never a good idea to assume that 0,0 corresponds to the "lower left corner". PDFs are actually free to redefine their coordinate space as they see fit. That PDF has this specific entry for page 1:

/MediaBox   [0, -1693.08, 2396.52, 0]

这会将 y 参数向下偏移1693.08个单位。幸运的是,这很容易解决。您正确设置页面大小,但您还希望在放置模板时使用该页面大小的坐标:

This offsets the y parameter by 1693.08 units "downwards". Luckily this is pretty easy to fix. You're setting the page size correctly but you also want to use that page size's coordinates when placing the template:

var s = reader.GetPageSizeWithRotation(1);
cb.AddTemplate(page, s.Left, s.Bottom);

这篇关于复印文件时的空白页的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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