對於我目前的項目,我需要採用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. 如何使用Rotativa將內容縮小到單個PDF頁面?
- 3. Window.print()縮放頁面內容?
- 4. 來自asp.net頁面內容的PDF
- 5. 較長的頁面內容後iframe高度不縮小
- 6. 如何Zoomin /縮小(ZoomOut)的內容和頁面都不僅頁面高度
- 7. 旋轉PDF頁面的內容,而不是實際的頁面
- 8. 閱讀PDF文件當前頁面打開頁面的內容
- 9. 用聚合物縮小所有頁面內容
- 10. 頁面縮放/內容重疊
- 11. 基於頁面內容的ASP.Net智能縮放頁面
- 12. 從UIscrollview的內容縮小
- 13. WordPress的小部件頁面內容
- 14. Dreamweaver縮小頁面大小?
- 15. 縮小頁面大小
- 16. 將PDF頁面內容導出到單個頁面
- 17. 如何在整個頁面縮小時縮小整個頁面?
- 18. EVO PDF PDF內容有小字體
- 19. 爲PDF頁面添加瀏覽內容爲PDF在IOS
- 20. 做一個頁面,其內容更小
- 21. 自動縮小HTML內容
- 22. PDF頁面的縮略圖(Java)
- 23. 檢測頁面縮小
- 24. JasperReports頁面大小縮放
- 25. 強制HTML頁面縮小
- 26. JQuery Mobile:頁面縮小
- 27. PdfPtable縮小到頁面
- 28. 頁面縮小點擊
- 29. 縮小HTML頁面並轉換爲A4尺寸pdf
- 30. 使用Ghostscript縮小PDF以適合一個頁面
請向我們展示您已擁有的代碼,並告訴我們您嘗試了哪些方法,哪些方法無效。 –