对于我目前的项目,我需要采用pdf并缩小第一页的内容而不改变页面的整体大小,以便我可以在没有它的情况下向底部添加其他信息与任何预先存在的内容重叠。有没有办法使用iTextSharp来做到这一点?我将不胜感激您的任何帮助!缩小pdf页面的内容
回答
您可以通过在页面内容流中添加一个转换矩阵来缩小页面内容。像这样:
public void shrink(PdfStamper stamper, int page, float factor)
{
Rectangle crop = stamper.Reader.GetCropBox(page);
float diffX = crop.Right * (1 - factor);
float diffY = crop.Top * (1 - factor);
PdfDictionary pageN = stamper.Reader.GetPageN(page);
stamper.MarkUsed(pageN);
PdfArray ar = null;
PdfObject content = PdfReader.GetPdfObject(pageN.Get(PdfName.CONTENTS), pageN);
if (content == null)
return;
if (content.IsArray())
{
ar = new PdfArray((PdfArray)content);
pageN.Put(PdfName.CONTENTS, ar);
}
else if (content.IsStream())
{
ar = new PdfArray();
ar.Add(pageN.Get(PdfName.CONTENTS));
pageN.Put(PdfName.CONTENTS, ar);
}
else
return;
ByteBuffer out_p = new ByteBuffer();
out_p.Append(factor).Append(" 0 0 ").Append(factor).Append(' ').Append(diffX).Append(' ').Append(diffY).Append(" cm ");
PdfStream stream = new PdfStream(out_p.ToByteArray());
ar.AddFirst(stamper.Writer.AddToBody(stream).IndirectReference);
out_p.Reset();
}
(此代码借用从PdfStamper
UnderContent和OverContent代。)
提示:shrink
具有检索页面的OverContent或UnderContent之前被使用。
您可以使用它像这样:
[Test]
public void ShrinkFirstPage()
{
string origFile = ...;
string resultFile = ...;
using (PdfReader reader = new PdfReader(origFile))
using (FileStream output = new FileStream(resultFile, FileMode.Create, FileAccess.Write))
using (PdfStamper stamper = new PdfStamper(reader, output))
{
int page = 1;
float factor = .9f;
shrink(stamper, page, factor);
Rectangle box = reader.GetCropBox(page);
box.Top = box.Top - factor * box.Height;
PdfContentByte cb = stamper.GetOverContent(page);
cb.SetColorFill(BaseColor.YELLOW);
cb.SetColorStroke(BaseColor.RED);
cb.Rectangle(box.Left, box.Bottom, box.Width, box.Height);
cb.FillStroke();
cb.SetColorFill(BaseColor.BLACK);
ColumnText ct = new ColumnText(cb);
ct.AddElement(new Paragraph("This is some text added to the front page of the front page of this document."));
ct.SetSimpleColumn(box);
ct.Go();
}
}
从这种原始
你
,并从该
你
请注意:该代码并不需要页面旋转进去。如果您旋转了页面,则应该相应地扩展shrink
。
工程就像一个魅力!我感谢您的帮助! – 1Programming1
我还有一个问题。在缩小内容之后,是否有办法将页面中的内容居中放置,而不是正确地对其进行调整?我试着用diffX和diffY玩,没有运气。 – 1Programming1
是的,上面的代码使用'Top'和'Right'来修复右上角。如果您想缩小到中心位置,则必须使用页面中间的坐标来代替。 – mkl
- 1. 如何缩小html页面的内容?
- 2. Window.print()缩放页面内容?
- 3. 来自asp.net页面内容的PDF
- 4. 阅读PDF文件当前页面打开页面的内容
- 5. 用聚合物缩小所有页面内容
- 6. 基于页面内容的ASP.Net智能缩放页面
- 7. Dreamweaver缩小页面大小?
- 8. 缩小页面大小
- 9. 将PDF页面内容导出到单个页面
- 10. EVO PDF PDF内容有小字体
- 11. 为PDF页面添加浏览内容为PDF在IOS
- 12. 自动缩小HTML内容
- 13. PDF页面的缩略图(Java)
- 14. 页面缩小点击
- 15. 将div缩小为内容大小
- 16. 生成PDF页面缩略图
- 17. 将PDF缩放到单个页面
- 18. 子页面内容
- 19. 当内容缩小时动态缩小GTK +中的窗口?
- 20. 主页和内容页面
- 21. Flex:缩小打印页面大小
- 22. 虾PDF压缩,压缩的内容流,它有什么作用
- 23. iText pdf具有相同内容的多个页面
- 24. 将内容适配到PDF中的单个页面
- 25. 如何将html页面的动态内容转换为pdf
- 26. 内容明智而不是页面明智的PDF比较库
- 27. jqtouch中的iframe不缩小内容?
- 28. 如何压缩我的ASP.NET页面中的所有内容?
- 29. 内容页面中的Findcontrols
- 30. 的Android的WebView缩小页面加载
请向我们展示您已拥有的代码,并告诉我们您尝试了哪些方法,哪些方法无效。 –