当我运行此程序时,图像将以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();
}
}
}
答案 0 :(得分:2)
你的问题没有引起注意,因为它没有被标记为iText问题。我修好了。
您可以通过调整PDF格式的页面大小来解决问题。目前,您隐式定义页面大小:
Document document = new Document();
您没有传递任何参数,因此使用默认页面大小:PageSize.A4
。
如果要定义其他页面大小,则需要添加Rectangle
作为参数。顺便说一下,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给出的建议!