我正在用C#创建Windows 8.1的应用程序。进入Windows.Data.Pdf我发现如何在我的应用程序中使用PDF文件。但我想知道我是否可以将一个A3页面分成多个PDF文件?
答案 0 :(得分:1)
您不想拆分页面,而是想要平铺它。
Chapter 6 of my book(第6.2.3节)对此进行了解释。请查看TilingHero
示例(Java / C#)。在此示例中,一个大页面(hero.pdf)被拆分为具有多个A4页面(superman.pdf)的PDF。
这是一些代码:
PdfReader reader = new PdfReader(resource);
Rectangle pagesize = reader.GetPageSizeWithRotation(1);
using (Document document = new Document(pagesize)) {
// step 2
PdfWriter writer = PdfWriter.GetInstance(document, ms);
// step 3
document.Open();
// step 4
PdfContentByte content = writer.DirectContent;
PdfImportedPage page = writer.GetImportedPage(reader, 1);
// adding the same page 16 times with a different offset
float x, y;
for (int i = 0; i < 16; i++) {
x = -pagesize.Width * (i % 4);
y = pagesize.Height * (i / 4 - 3);
content.AddTemplate(page, 4, 0, 0, 4, x, y);
document.NewPage();
}
}
数学对A0页面有效。您需要将其调整为A3页面(意思是:您需要的数学运算更容易)。
您需要计算pagesize
以便它会导致较小的页面,然后使用以下内容:
using (Document document = new Document(pagesize)) {
// step 2
PdfWriter writer = PdfWriter.GetInstance(document, ms);
// step 3
document.Open();
// step 4
PdfContentByte content = writer.DirectContent;
PdfImportedPage page = writer.GetImportedPage(reader, 1);
// adding the same page 16 times with a different offset
float x, y;
for (int i = 0; i < 16; i++) {
x = -pagesize.Width * (i % 4);
y = pagesize.Height * (i / 4 - 3);
content.AddTemplate(page, x, y); // we don't scale anymore
document.NewPage();
}
}