我想知道一种从PDF文件中删除白边距的方法.就像Adobe Acrobat X Pro一样.我知道它不适用于每个PDF文件.
我猜这样做的方法是获取文本边距,然后裁剪出边距.
PyPdf是首选.
iText根据以下代码查找文本边距:
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();
}
Run Code Online (Sandbox Code Playgroud) 我需要裁剪几百个PDF文件 - 我愿意裁剪实际文档或者只是为每个文档添加裁剪框,以便在打开PDF时显示正确的可视区域.
我怎么能用Ghostscript(v8.71)做到这一点?我找到了这个:
gs -sDEVICE=pdfwrite -sOutputFile=marked.pdf [/CropBox [54 54 1314 810] /PAGES pdfmark original.pdf
我试过这个(以及我能想到的所有变种),但我总是得到一个错误:
Error: /undefinedfilename in ([/CropBox)
我试过移动命令的参数,但似乎没有任何工作.有谁知道如何实现这一目标?
更新:更正语法后仍然没有裁剪框,请参阅结果 -
结果: pdfinfo -box -f 1 -l 3 original.pdf
Producer: PDFlib 7.0.2 (PHP5/Linux)
CreationDate: Wed Oct 21 11:41:04 2009
ModDate: Wed Oct 21 13:38:22 2009
Tagged: no
Pages: 1
Encrypted: no
Page 1 size: 1423 x 918 pts
Page 1 MediaBox: 0.00 0.00 1423.00 918.00
Page 1 CropBox: 0.00 0.00 1423.00 918.00
Page 1 BleedBox: 54.00 54.00 1369.00 …Run Code Online (Sandbox Code Playgroud) 我曾经pdftk解压PDF,然后将其作为文本文件打开.
我想编辑/ MediaBox字段,这是我的情况
/MediaBox [0 0 612 792]
Run Code Online (Sandbox Code Playgroud)
例如,我想减少利润
/MediaBox [100 0 512 792]
Run Code Online (Sandbox Code Playgroud)
不幸的是它不起作用.我可以0改成一个2或一个,9但我不能举个100例子.
知道为什么吗?
我需要将我的PDF文件中的某个部分裁剪为PNG(这将使用Ghostscript与PHP自动完成).这就是我现在所做的,基本上将PDF的第一页转为PNG:
gs -q -dNOPAUSE -dBATCH \
-sDEVICE=pngalpha -dEPSCrop \
-sOutputFile=output.png input.pdf
Run Code Online (Sandbox Code Playgroud)
具体来说,我正试图将这个左上角的卡片裁剪为PNG.我也愿意就如何实现这一目标提出更多建议.
我正在做一个森林情节,并希望将其保存为PDF文件.
我的森林地块超大(8英寸*20英寸).它可以放在一页PDF中,如下所示:
dev.print(pdf, file="C:\\Work\\plot.pdf", width=8, height=20);
Run Code Online (Sandbox Code Playgroud)
但是它太长了:当我在A4纸上打印这个PDF时,它必须缩小以适合纸张.
所以我想将它保存为两页的PDF文件(来自R).Ps:这不是关于如何设置打印机的问题.
这该怎么做?
在 Unix 或 Windows 中,我想将此字典转换为 Python dictionary。我复制了PDF字典的内容并将它们放在一个.rtf文件中,打算read用 Python来处理它们。但是,它给出了类似的东西:
A /e?/ 名词 ABO 系统的人类血型,含有 A 抗原(注意:A 型的人可以捐献给同一组或 AB 组的人,并且可以从具有 A 型的人那里接受血液A 型或 O 型。)
AA
腹胀 /bd?m?n(?)ld?s十?(?)n/ 名词 腹部
因气体或液体而伸展的情况
A
腹胀
AA 缩写 酗酒者匿名的
它基本上将 PDF 中的列压缩成奇怪的混杂。如何将 PDF 转换为文本以便尊重列?换句话说,所需的输出是:
A /e?/ 名词 ABO 系统的人类血型,含有 A 抗原(注意:A 型的人可以捐献给同一组或 AB 组的人,并且可以从具有 A 型的人那里接受血液A 型或 O 型。)
AA 缩写 戒酒匿名
...等等
正如标题所说。
严格来说,我为灰度图像定义的“文本”边界框是一组 4 个坐标(x、y、x+宽度、y+高度),它们必须在该图像中定义一个矩形区域,该区域具有最大数量的矩形区域。非白色像素,同时尽可能少的白色像素(不改变非白色像素的最大数量)。我将文本放在引号中,因为图像实际上并不包含文本,因为图像只包含带有颜色的像素。
在我的 Ubuntu 中安装 ImageMagick 并在终端中输入命令:$convert input.png -trim ouput.png,我得到:
在网络浏览器的新选项卡中打开这两个图像,您将了解它们的区别,并且您还将了解我定义的“文本”边界框。output.png 实际上具有我正在寻找的宽度和高度。我不知道如何获取 x 和 y 坐标。
这里提供的 pdf 页面的答案 (1)不符合我的标准,因为 gs 给我的“文本”边界框有很大的白边距(实际上据我所知,gs 定义为“文本”边界框的内容) pdf 与我对图片的“文本”边界框的定义不同)。