新建文件夹.zip (3.2 MB)
这里面是我的cad文件和代码
@humanhuman,
你好。
您需要根据绘图单位和所需物理尺寸(以毫米或英寸为单位)设置尺寸(A3 为 297 毫米 x 420 毫米,或 11.7 英寸 x 16.5 英寸)
boolean isMetric = false;
double coefficient = 1.0;
switch (cadImage.getUnitType())
{
// you should probably extend this with more types that may appear in drawings
case UnitType.Meter:
isMetric = true;
coefficient = 1.0;
break;
case UnitType.Millimeter:
isMetric = true;
coefficient = 0.001;
break;
case UnitType.Inch:
coefficient = 1.0;
break;
}
SizeF size;
if (isMetric)
{
double metersCoeff = 1 / 1000.0;
double scaleFactor = metersCoeff / coefficient;
size = new SizeF((float)(297 * scaleFactor), (float)(420 * scaleFactor));
cadRasterizationOptions.setUnitType(UnitType.Millimeter);
}
else
{
size = new SizeF((float)(11.7f / coefficient), (float)(16.5f / coefficient));
cadRasterizationOptions.setUnitType(UnitType.Inch);
}
//设置纸张方向,默认纵向,
cadRasterizationOptions.setPageSize(size);
cad文件较大时,转换为A4格式的pdf后,内容会变得不清晰,是否有办法提升清晰度
@humanhuman,
如果将大图导出为小尺寸,这很复杂,有时甚至无法使它看起来更好。 您可以尝试不导出到 A4,而是导出到一些更大的合理页面尺寸,如 1600x1600。 您可以将选项中的大小留空,绘图将自动缩放。 您可以尝试导出布局而不是模型。 您也可以向我们展示初始文件和结果,我们将考虑其他设置/改进/修复以使其看起来更好。
我该如何根据cad的图像尺寸选择最优的转换出来的pdf尺寸,因为我如果不设置尺寸,会导致转换出来的pdf很大,我需要在文件大小尽量小和图像尽量清晰中,选择最好的尺寸,这个尺寸最好能根据cad文件来判断
我们这样来判断尺寸不知道是否合理:
int unitType = cadImage.getUnitType();
switch (unitType) {
// you should probably extend this with more types that may appear in drawings
case UnitType.Meter:
isMetric = true;
coefficient = 1.0;
break;
case UnitType.Millimeter:
isMetric = true;
coefficient = 0.001;
break;
case UnitType.Inch:
coefficient = 1.0;
break;
case UnitType.Centimenter:
isMetric = true;
coefficient = 0.01;
break;
case UnitType.Micrometer:
isMetric = true;
coefficient = 1000;
break;
case UnitType.Decimeter:
isMetric = true;
coefficient = 0.1;
break;
case UnitType.Decameter:
isMetric = true;
coefficient = 10;
break;
case UnitType.Hectometer:
isMetric = true;
coefficient = 100;
break;
}
SizeF size;
if (isMetric) {
double metersCoeff = 1 / 1000.0;
double scaleFactor = metersCoeff / coefficient;
if(cadImage.getWidth() > cadImage.getHeight()){
size = new SizeF((float)(297 * scaleFactor), (float)(210 * scaleFactor));//宽在前 高在后
}else {
size = new SizeF((float)(210 * scaleFactor), (float)(297 * scaleFactor));//宽在前 高在后
}
cadRasterizationOptions.setUnitType(UnitType.Millimeter);
} else {
if(cadImage.getWidth() > cadImage.getHeight()){
size = new SizeF((float)(11.69f / coefficient), (float)(8.27f / coefficient));
}else {
size = new SizeF((float)(8.27f / coefficient), (float)(11.69f / coefficient));
}
cadRasterizationOptions.setUnitType(UnitType.Inch);
}
或者可以多提供一些dwg(UnitType为厘米)的文件供我们测试吗
@humanhuman,
恐怕我不能分享我们的测试文件。 我刚刚测试了以 cm 为单位的随机绘图,转换为 A4 看起来不错。 如果您发现特定文件有问题,请将其附在此处,我们会查看。 顺便说一句,我在你的最后一个例子中没有看到你应用了尺寸:cadRasterizationOptions.setPageSize(size); 但我想这只是错字。