复印文件时空白页
Blank page when copy document
当我复制文档时
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,因为复制文档后需要插入一些文本和图像。this bad file
那个 PDF 很好地说明了为什么假设 0,0
对应于 "lower left corner" 永远不是一个好主意。 PDF 实际上可以自由地重新定义它们认为合适的坐标 space。该 PDF 具有第 1 页的特定条目:
/MediaBox [0, -1693.08, 2396.52, 0]
这会将 y
参数偏移 1693.08 个单位 "downwards"。幸运的是,这很容易修复。您正确设置了页面大小,但您还想在放置模板时使用该页面大小的坐标:
var s = reader.GetPageSizeWithRotation(1);
cb.AddTemplate(page, s.Left, s.Bottom);
当我复制文档时
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,因为复制文档后需要插入一些文本和图像。this bad file
那个 PDF 很好地说明了为什么假设 0,0
对应于 "lower left corner" 永远不是一个好主意。 PDF 实际上可以自由地重新定义它们认为合适的坐标 space。该 PDF 具有第 1 页的特定条目:
/MediaBox [0, -1693.08, 2396.52, 0]
这会将 y
参数偏移 1693.08 个单位 "downwards"。幸运的是,这很容易修复。您正确设置了页面大小,但您还想在放置模板时使用该页面大小的坐标:
var s = reader.GetPageSizeWithRotation(1);
cb.AddTemplate(page, s.Left, s.Bottom);