gpt4 book ai didi

ios - 如何在iOS中以实际尺寸打印pdf

转载 作者:行者123 更新时间:2023-12-03 21:40:27 24 4
gpt4 key购买 nike

这是一个令人沮丧的问题。

我正在使用 UIPrintInteractionController打印 PDF 文件。此 PDF 文件的大小为 A4, 595x842 在 pt 中,但结果是打印的内容缩小了。

根据我是否使用 iPhone 模拟器,结果甚至会有所不同。当我在 iPhone 模拟器中测试以下代码时,我打印的文件是它的实际大小。但是当我在设备 (iPad) 中测试这些代码时,问题发生了,并带有日志“ Deskjet\0323520\032series\032[5B73DB]._ipp._tcp.local.: Print-Job request successfully with warning : 作业属性与打印文档不匹配。"

我写的代码是这样的:

- (IBAction)printButtonTouched:(UIButton *)sender {
NSURL *testFileURL = [self makeTestPDF];
if ([UIPrintInteractionController canPrintURL:testFileURL]) {
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.jobName = testFileURL.path;
printInfo.orientation = UIPrintInfoOrientationPortrait;
printInfo.outputType = UIPrintInfoOutputGeneral;
printInfo.duplex = UIPrintInfoDuplexNone;

self.myPrinter.printInfo =printInfo;
self.myPrinter.printingItem = testFileURL;

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
[self.myPrinter presentFromRect:sender.frame inView:self.view animated:YES completionHandler:^(UIPrintInteractionController *printInteractionController, BOOL completed, NSError *error) {

}];
} else {
[self.myPrinter presentAnimated:YES completionHandler:^(UIPrintInteractionController *printInteractionController, BOOL completed, NSError *error) {

}];
}
}
}

- (UIPrintPaper *)printInteractionController:(UIPrintInteractionController *)printInteractionController choosePaper:(NSArray *)paperList
{
CGRect mediaBox = CGRectMake(0, 0, 595.276, 841.89);
UIPrintPaper *bestPaper = [UIPrintPaper bestPaperForPageSize:mediaBox.size withPapersFromArray:paperList];
return bestPaper;
}

当我在 PDF 上下文中开始一个 PDF 页面时,我的代码是这样的:
    CGFloat a4Width = 595.276f;
CGFloat a4Height = 841.89f;
CGRect mediaBox = CGRectMake(0, 0, a4Width, a4Height);
UIGraphicsBeginPDFContextToFile(testPDFURL.path, mediaBox, nil);
UIGraphicsBeginPDFPageWithInfo(mediaBox, nil);

我正在测试的打印机是 HP Deskjet Ink Advantage 3525 .
当我在另一台也支持 的打印机上测试时,同样的事情仍然发生。 AirPrint ,唯一的区别是缩小比例。

我正在寻找如何使用实际尺寸打印 PDF 的答案。我已经尝试了近一个星期来寻找答案,但我没有找到有用的信息。请帮我。

最佳答案

我正在做类似的事情,但就我而言,我打印 UIImage .我实现了一个 UIPrintPageRender子类,我覆盖了 drawContentForPage方法。该方法暴露了 CGRect应该打印内容的位置:

class ExtendedPageRenderer: UIPrintPageRenderer {
override func drawContentForPage(at pageIndex: Int, in contentRect: CGRect) {
// code that will draw/render in CGRect
}
}
我像这样使用这个类:
let pageRenderer = ExtendedPageRenderer()
let printController = UIPrintInteractionController.shared
printController.printPageRenderer = pageRenderer

关于ios - 如何在iOS中以实际尺寸打印pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18532062/

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