当我运行这个程序时,图像将转换为 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/