我有一个需要缩小的pdf。pdf是A4竖屏的,我需要的是将pdf的内容缩小到5%,并将其放入一个新的A4和竖屏大小的PDF中。将pdf转换为图像、缩放并放回pdf不是一个选项。我正在寻找一种在java中解决这个问题的方法。有没有办法用pdfbox或itext解决这个问题?
PDFBox 2.0的答案。*:
try (PDDocument doc = PDDocument.load(new File("...")))
{
for (int p = 0; p < doc.getNumberOfPages(); ++p)
{
PDPage page = doc.getPage(p);
try (PDPageContentStream cs = new PDPageContentStream(doc, page, AppendMode.PREPEND, true))
{
cs.saveGraphicsState();
cs.transform(Matrix.getScaleInstance(0.05f, 0.05f));
cs.saveGraphicsState();
}
try (PDPageContentStream cs = new PDPageContentStream(doc, page, AppendMode.APPEND, true))
{
cs.restoreGraphicsState();
cs.restoreGraphicsState();
}
}
doc.save(new File("...."));
}
你会在左下角看到一些很小的东西。
如果您使用iText 7,那么这是一个选项:
public void manipulatePdf(String src, String dest) throws IOException {
PdfDocument pdfDoc = new PdfDocument(new PdfReader(src), new PdfWriter(dest));
int n = pdfDoc.getNumberOfPages();
PdfPage page;
for (int p = 1; p <= n; p++) {
new PdfCanvas(pdfDoc.getPage(p).newContentStreamBefore(),
new PdfResources(), pdfDoc).writeLiteral("\nq 0.05 0 0 0.05 0 0 cm\nq\n");
new PdfCanvas(pdfDoc.getPage(p).newContentStreamAfter(),
new PdfResources(), pdfDoc).writeLiteral("\nQ\nQ\n");
}
pdfDoc.close();
}
请注意,5%(writeleral()方法中的值非常小。如果有文字,读起来会很困难。也许你的意思是95%。在这种情况下,请使用:writeleral(“\nq 0.95 0 0.95 0 cm\nq\n”)
。
来源:如何缩小现有PDF中的页面?
注意:iText 5正在停产,但iText 5的答案已于2014年发布在Stack Overflow上:在现有PDF中使用Rectange旋转收缩PDF页面
问题描述 (Problem Description) 如何使用Java缩小PDF文档中的内容。 解决方案 (Solution) 以下是使用Java缩小PDF文档内容的程序。 import com.itextpdf.kernel.geom.AffineTransform; import com.itextpdf.kernel.geom.Rectangle; import com.itextpdf
在JavaFX中,您可以绘制具有锐边或带有拱形边的矩形,如下图所示。 带有拱形边缘的那个被称为圆角矩形,它有两个额外的属性,即 - arcHeight - 弧形的垂直直径,位于圆角矩形的角上。 arcWidth - 圆角矩形的圆弧处的水平直径。 默认情况下,除非使用各自的setter方法setArcHeight()和setArcWidth()将弧的高度和宽度设置为+ ve值(0 <),否则Java
我正在尝试缩放pdf文件,就像复印机中的缩放功能一样,它可以按百分比缩放文档(如下所示:https://inspectapedia.com/graphics/Safari_Page_Setup.jpg),我正在使用pdfbox管理我的pdf文件。我尝试过这个代码,但为什么它不起作用?代码中没有错误。 有人知道为什么该代码不起作用吗? 编辑 我需要它在API 16上工作
问题内容: 一旦将所有数据存储到sqlite中,它已经达到14 MB。因此,我担心有些人无法从连接速度较慢的区域下载我的应用程序。有什么办法可以缩小sqlite数据库? 问题答案: 您尝试过VACUUM吗? VACUUM命令重建整个数据库。应用程序可能会这样做的原因有几个: 除非SQLite在“ auto_vacuum = FULL”模式下运行,否则从数据库文件中删除大量数据时,它将留下空白空间或
问题内容: 如何在目录/子目录中搜索PDF文件的内容?我正在寻找一些命令行工具。似乎无法搜索PDF文件。 问题答案: 您的发行版应提供一个名为的实用程序: 要使pdftotext输出到stdout,而不是文件,必须使用“-”。在和选项将在grep的输出把文件名。可选标志不错,它告诉grep使用终端上的颜色进行输出。 (在Ubuntu中,由或提供。) 这种方法,使用和,拥有一个优势,如果你想使用GN
好的,我有一个包含gz文件的zip文件(unix gzip)。 如何使用? 编辑:这不是一个重复,因为我的gzipped文件在一个zipped文件中,我试图避免将该zip文件解压缩到磁盘上。它与zip文件中的zip文件一起工作,就像如何在Python中从zip文件中读取zip文件一样?.