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

标签 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();
    }
  }
}

最佳答案

您的问题没有被注意到,因为它没有被标记为 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/

相关文章:

java - 如何在java中将缓冲图像打印为缩略图?

java - 如何在 itext7 中获取 widthPoint

java - iText 5.5.3 PDFPCell : long text doesn't fit corrctly in cell (wrap text incorrectly)

c# - ASP.Net 控制按钮 PostBack 导致重定向,当我根本不想要它时(打印按钮)

c# - iTextSharp 不呈现自定义乌尔都语字体

java - HTML 到 PDF 使用 iText : How can produce a checkbox

java - 执行过滤: List<>

java - 带有 native 方法 malloc() 的 JNI 导致 Cygwin 崩溃

java - 支柱 2 s :select won't work within a jsp file

java - 为什么 Eclipse 构建路径中需要 oracle 驱动程序?