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

时间:2015-12-12 07:18:41

标签: java itext

当我运行此程序时,图像将以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();
    }
  }
}

1 个答案:

答案 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给出的建议!