gpt4 book ai didi

java - 我想将图像转换为 pdf(高质量),但在我的程序中图像显示为在我的 pdf 中裁剪

转载 作者:行者123 更新时间:2023-12-02 04:06:32 29 4
gpt4 key购买 nike

当我运行这个程序时,图像将转换为 pdf,但给定的输出 pdf 与图像不匹配,因为它被裁剪了。我使用 iText 库。

    import java.io.FileOutputStream;
import java.io.IOException;

import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.Image;


public class demo {
public static void main(String ... args) {
Document document = new Document();
String input = "d:/PDFCONV/ho.png"; // .gif and .jpg are ok too!
String output = "d:/PDFCONV/pdfho.pdf";
try {
FileOutputStream fos = new FileOutputStream(output);
PdfWriter writer = PdfWriter.getInstance(document, fos);
writer.open();
document.open();
document.add(Image.getInstance(input));
document.close();
writer.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}

最佳答案

您的问题没有被注意到,因为它没有被标记为 iText 问题。我解决了这个问题。

您可以通过调整 PDF 页面的大小来解决问题。目前您隐式定义页面大小:

Document document = new Document();

您没有传递任何参数,因此使用默认页面大小:PageSize.A4

如果您想定义其他页面尺寸,您需要添加一个矩形作为参数。顺便说一句,Image 类扩展了 Rectangle 类,因此您可以这样做:

Image image = Image.getInstance(input);
Document document = new Document(image);

现在您可以像这样添加图像:

image.setAbsolutePosition(0, 0);
document.add(image);

如果您未将绝对位置设置为x = 0, y = 0,您的图像仍会因边距而被裁剪。作为替代方案,您可以定义零宽度/高度的边距,但这可以:

Image image = Image.getInstance(input);
Document document = new Document(image);
PdfWriter writer = PdfWriter.getInstance(document, fos);
document.open();
image.setAbsolutePosition(0, 0);
document.add(image);
document.close();

请从代码中删除writer.open();writer.close();。 (它们为什么在那里?您从哪个示例中复制了这些行?)请遵循 fildor 和 read the documentation 给出的建议!

关于java - 我想将图像转换为 pdf(高质量),但在我的程序中图像显示为在我的 pdf 中裁剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34237357/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com