我正在尝试将pdf的左侧裁剪为10毫米。我使用下面的代码 public void TrimLeft(string sourceFilePath,string outputFilePath) {
PdfReader pdfReader = new PdfReader(sourceFilePath);
float width =(float) GetPDFwidth(sourceFilePath);
float height = (float)GetPDFHeight(sourceFilePath);
float widthTo_Trim = iTextSharp.text.Utilities.MillimetersToPoints(10);
// Set which part of the source document will be copied.
// PdfRectangel(bottom-left-x, bottom-left-y, upper-right-x, upper-right-y)
PdfRectangle rect = new PdfRectangle(0, 0, width - widthTo_Trim, height);
PdfRectangle rectLeftside = new PdfRectangle(0,0,width - widthTo_Trim, height);
using (var output = new FileStream(outputFilePath, FileMode.CreateNew, FileAccess.Write))
{
// Create a new document
Document doc = new Document();
// Make a copy of the document
PdfSmartCopy smartCopy = new PdfSmartCopy(doc, output);
// Open the newly created document
doc.Open();
// Loop through all pages of the source document
for (int i = 1; i <= pdfReader.NumberOfPages; i++)
{
// Get a page
var page = pdfReader.GetPageN(i);
// Apply the rectangle filter we created
page.Put(PdfName.CROPBOX, rectLeftside);
page.Put(PdfName.MEDIABOX, rectLeftside);
// Copy the content and insert into the new document
var copiedPage = smartCopy.GetImportedPage(pdfReader, i);
smartCopy.AddPage(copiedPage);
}
// Close the output document
doc.Close();
}
}
其裁剪的PDF格式的RHS。我尝试改变坐标 PdfRectangle rectLeftside = new PdfRectangle(0,0,width - widthTo_Trim,height); 但无法得到理想的结果。 我怎样才能裁剪X mm左侧
答案 0 :(得分:2)
使评论中的提示成为实际答案......
您可以像这样创建新的裁剪框矩形:
PdfRectangle rectLeftside = new PdfRectangle(0,0,width - widthTo_Trim, height);
有问题的构造函数是:
/**
* Constructs a <CODE>PdfRectangle</CODE>-object.
*
* @param llx lower left x
* @param lly lower left y
* @param urx upper right x
* @param ury upper right y
*/
...
public PdfRectangle(float llx, float lly, float urx, float ury)
因此,假设原始PDF具有左下坐标(0,0)的裁剪框,则代码操纵右上角x,即框的右侧。另一方面,你实际上想要操纵左侧。因此,你应该使用类似的东西:
PdfRectangle rectLeftside = new PdfRectangle(widthTo_Trim, 0, width, height);
在评论中提示之后,这也是OP的解决方案。
OP使用PdfSmartCopy
实例及其方法GetImportedPage
来裁剪pdf的左侧。虽然这已经比使用普通{{1}更好了对于此任务,操作单个PDF的最佳选择通常是PdfWriter
:您不必再复制任何内容,只需应用更改即可。此外,结果内部更像是原始结果。
他的代码中的OP假设
PdfStamper
和GetPDFwidth
中确定)和对于所有PDF,这些假设都不适用。因此,应该分别检索和操作每页的裁剪框。
GetPDFHeight