Java 如何缩小pdf的内容?

Java 如何缩小pdf的内容?,java,pdf,itext,pdfbox,Java,Pdf,Itext,Pdfbox,我有一个pdf,我需要缩小比例。该pdf是在A4肖像模式,我需要的是缩小pdf的内容到5%,并把这个到一个新的pdf大小也在A4和肖像模式。这不是一个将pdf转换为图像、缩放它们并将其放回pdf的选项。我正在寻找一种用java解决这个问题的方法。有没有办法用pdfbox或itext解决这个问题 如果使用,则这是一个选项: public void manipulatePdf(String src, String dest) throws IOException { PdfDocument

我有一个pdf,我需要缩小比例。该pdf是在A4肖像模式,我需要的是缩小pdf的内容到5%,并把这个到一个新的pdf大小也在A4和肖像模式。这不是一个将pdf转换为图像、缩放它们并将其放回pdf的选项。我正在寻找一种用java解决这个问题的方法。有没有办法用pdfbox或itext解决这个问题

如果使用,则这是一个选项:

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();
}
public void manufacturepdf(String src,String dest)抛出IOException{
PdfDocument pdfDoc=新PdfDocument(新PDF阅读器(src)、新PDF编写器(dest));
int n=pdfDoc.getNumberOfPages();
PDF页面;

对于(int p=1;pPDFBox 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("...."));
}
try(PDDocument doc=PDDocument.load(新文件(“…”))
{
对于(int p=0;p

你会在左下角看到一些小东西。

谢谢你的回答,很遗憾,我买不起这个版本,可能你不会展示旧版本2.1.7的解决方案?当你说我买不起这个版本时,你是什么意思?如果你避免创建封闭源代码软件并遵守AGPL,那么你可以在AGP下使用iText如果你在为一个雇主工作,你不必支付执照,这取决于你的雇主。如果你是一个自雇者,考虑通过在它上面加一个附加物来赚钱。顺便说一句:你不能再在商业环境中使用ITEX2.1.7了:参见AlPhaba。如果你只限于你的图书馆的古代版本。首先,你应该在一开始的问题中指出这一点。PDFBox<2.0如何?1.8中没有前置功能,因此需要大量的工作来模拟。更新到2.0。