如何在iText 7中将方向设置为横向

11

我正在使用iText7的convertToPdf()方法将html转换为pdf。PDF被正确地生成,但横向模式无法正常工作。

有人可以告诉我如何获得横向模式吗?

import com.itextpdf.html2pdf.ConverterProperties;
import com.itextpdf.html2pdf.HtmlConverter;
import com.itextpdf.styledxmlparser.css.media.MediaDeviceDescription;
import com.itextpdf.styledxmlparser.css.media.MediaType;

import java.io.File;
import java.io.IOException;

import static com.itextpdf.html2pdf.css.CssConstants.LANDSCAPE;

public class htmlToPDF {

    public static void main(String args[]) throws IOException {

        ConverterProperties properties = new ConverterProperties();

        MediaDeviceDescription med = new MediaDeviceDescription(MediaType.ALL);
        med.setOrientation(LANDSCAPE);
        properties.setMediaDeviceDescription(med);

        HtmlConverter.convertToPdf(new File("D:\\test.html"), new File("D:\\test.pdf"),properties);
    }
}
2个回答

21

请只使用以PdfDocument为参数的转换器方法。例如,下面这个方法:convertToPdf(InputStream htmlStream, PdfDocument pdfDocument, ConverterProperties converterProperties)

现在你需要做的就是在将html文件转换成pdf文件之前设置文档的页面大小。

    PdfDocument pdfDocument = new PdfDocument(new PdfWriter(new File(sourcePath)));
    pdfDocument.setDefaultPageSize(PageSize.A4.rotate());
    HtmlConverter.convertToPdf(new FileInputStream(destPath), pdfDocument, new ConverterProperties());

2
谢谢,pdfDocument.setDefaultPageSize(PageSize.A4.rotate())正是我所需要的,因为我只想旋转文档中的某些页面。 - Rapwnzel
1
请添加以下缺失的代码行,以避免混淆。 var props = new ConverterProperties(); - Rajeev Kumar
@RajeevKumar 更新了代码片段,感谢您的建议! - Uladzimir Asipchuk
@Rapwnezel:你要如何只旋转某些页面? - ittradco

2
您可以使用PageOrientationsEventHandler来处理文档中的方向,例如:-
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(DEST));
PageOrientationsEventHandler eventHandler = new PageOrientationsEventHandler();
pdfDoc.addEventHandler(PdfDocumentEvent.START_PAGE, eventHandler);
Document doc = new Document(pdfDoc);
doc.add(new Paragraph("A simple page in portrait orientation"));
eventHandler.setOrientation(LANDSCAPE);

请在此处详细查看。最初的回答。

1
但是我该如何将HTML文件作为输入传递呢?我正在将HTML文件转换为PDF。 - NeedToLearn
如果有人想让他的文档具有不同方向的页面,那么这是一个很好的建议。然而,如果只是想在整个文档中设置某些特定的方向,就没有必要处理START_PAGE事件。 - Uladzimir Asipchuk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接