gpt4 book ai didi

delphi - 摘要 pdf 使用 Delphi 更改纸张大小

转载 作者:行者123 更新时间:2023-12-02 21:25:44 26 4
gpt4 key购买 nike

我正在尝试使用 Delphi 使用 Synopse SynPDF 库创建 PDF 文档。我需要能够动态更改纸张尺寸以适应我正在创建的文档。纸张尺寸的高度需要从 11 英寸更改为超过 100 英寸。我还想将图像的分辨率设置为每英寸 300 像素到每英寸 600 像素。这就是我的测试。

   lPdf := TPdfDocumentGDI.Create;
try
lPdf.ScreenLogPixels:=600;

lPdf.DefaultPageHeight := lPdf.ScreenLogPixels * 50; // Since ScreenLogPixels holds the number of pixels per inch this should give me a 50 inch long page.
lPdf.DefaultPageWidth := lPdf.ScreenLogPixels * 8; // Same here with Page being 8 inches wide.
// When viewing the document in Adobe Reader the page height and width 66.67 x 200.00 with nothing displayed
// If I comment out the ScreenLogPixels line the page size becomes 10.67 x 66.67 with a pixel count of 768 x 4800 with the proper text on the document.
lPage := lPDF.AddPage;
lPdf.VCLCanvas.Brush.Style:=bsClear;
MyY:=300;
lPDF.VCLCanvas.TextOut(100, 100, 'Width = ' + IntToStr(lPage.PageWidth) +
' Height = ' + IntToStr(lPage.PageHeight));
for MyX := 1 to 400 do begin
MyXLoc:=(MyX*120) mod (lPage.PageWidth);
MyString:=IntToStr(MyX);
lPDF.VCLCanvas.TextOut(MyXLoc, MyY, Mystring);
lPDF.VCLCanvas.Font.Size:= lPDF.VCLCanvas.Font.Size+4;
lPDF.VCLCanvas.Rectangle(MyXLoc, MyY, MyXLoc+lPDF.VCLCanvas.TextWidth(MyString), MyY+lPDF.VCLCanvas.TextHeight(MyString));
MyY := MyY + lPDF.VCLCanvas.TextHeight(MyString);
end;
lPdf.SaveToFile('c:\Syntest.pdf');
finally
lPdf.Free;

end;

最佳答案

在 PDF 中,所有位置和大小都存储在称为 PDF 单元的逻辑值中。 1 PDF 单位相当于 1/72 英寸。

DefaultPageHeightDefaultPageWidth 是 PDF 单位的值,即 1/72 英寸。

因此,对于 50' * 8' 的页面,您可以编写:

 lPdf.DefaultPageHeight := 72 * 50; 
lPdf.DefaultPageWidth := 72 * 8;

然后,lPdf.VCLCanvas 中可用的 VCL Canvas 将具有不同的坐标系,具体取决于 lPdf.ScreenLogPixels

因此,当您在 lPdf.VCLCanvas 中绘制某些内容时,请确保使用正确的坐标大小,即通过 lPdf.VCLCanvasSize 值。

关于delphi - 摘要 pdf 使用 Delphi 更改纸张大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24413663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com