我有一个.pdf文件,例如有7页。我将此文档拆分为7 .pdf文档,因此这意味着每个文档只有一个页面。但主要是我需要使页面的内容适合。所以删除空格,边距,调整大小。你有一些简单的建议吗?我添加图像链接以及拆分pdf文档的代码。感谢您的回复。
INPUT:
http://i.imgur.com/tgQK3hI.png
期望的输出:
http://i.imgur.com/v6cZDwg.png
CODE:
public void PdfSplitDocument(string filename)
{
String path = "C:/Doc/" + filename;
String result = "d:/output/result";
PdfCopy copy;
PdfReader reader = new PdfReader(path);
for (int i = 1; i <= reader.NumberOfPages; i++)
{
Document document = new Document(PageSize.A4, 0, 0, 0, 0);
copy = new PdfCopy(document, new FileStream(result + i + ".pdf", FileMode.Create));
document.Open();
copy.AddPage(copy.GetImportedPage(reader, i));
document.Close();
}
}
答案 0 :(得分:1)
看看ShowTextMargins示例。它使用TextMarginFinder类来查找找到文本的边距。在这个例子中,取自我的书&#34; iText in Action - Second Edition&#34;,我使用这个类绘制一个矩形:
public void addMarginRectangle(String src, String dest)
throws IOException, DocumentException {
PdfReader reader = new PdfReader(src);
PdfReaderContentParser parser = new PdfReaderContentParser(reader);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(RESULT));
TextMarginFinder finder;
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
finder = parser.processContent(i, new TextMarginFinder());
PdfContentByte cb = stamper.getOverContent(i);
cb.rectangle(finder.getLlx(), finder.getLly(),
finder.getWidth(), finder.getHeight());
cb.stroke();
}
stamper.close();
reader.close();
}
在您的情况下,您想要根据矩形裁剪页面。你有一个finder
对象,它允许你获得左下角(llx和lly)的坐标和右上角(urx和ury)的坐标。您可以使用这些坐标来裁剪页面,如CropPages示例中所示:
public void manipulatePdf(String src, String dest)
throws IOException, DocumentException {
PdfReader reader = new PdfReader(src);
int n = reader.getNumberOfPages();
PdfDictionary pageDict;
PdfRectangle rect = new PdfRectangle(llx, lly, urx, ury);
for (int i = 1; i <= n; i++) {
pageDict = reader.getPageN(i);
pageDict.put(PdfName.CROPBOX, rect);
}
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
stamper.close();
reader.close();
}
另一种选择是更改媒体框而不是裁剪框:
pageDict.put(PdfName.MEDIABOX, rect);
这些示例的C#版本可以在这里找到: